Cygwin 向使用cygstart打开的命令传递文件路径时的转义空格 问题

Cygwin 向使用cygstart打开的命令传递文件路径时的转义空格 问题,cygwin,Cygwin,运行以下命令时: cygstart bash "/home/FirstName LastName/bin/script.sh" 传递到bash的文件路径在空格处被切断,因此我得到以下错误: /usr/bin/bash: /home/FirstName: No such file or directory 我所尝试的: 一, 二, 三, 四, 五, 还有半打我现在记不起来的其他变体,包括上面所有的,用反斜杠来逃避空间。错误总是一样的 我遗漏了什么,或者有没有办法解决这个问题? 更新:我在本例中

运行以下命令时:

cygstart bash "/home/FirstName LastName/bin/script.sh"
传递到
bash
的文件路径在空格处被切断,因此我得到以下错误:

/usr/bin/bash: /home/FirstName: No such file or directory
我所尝试的: 一,

二,

三,

四,

五,

还有半打我现在记不起来的其他变体,包括上面所有的,用反斜杠来逃避空间。错误总是一样的

我遗漏了什么,或者有没有办法解决这个问题?


更新:我在本例中使用
cygstart
的原因是利用它的
--action=runas
选项。我调用的脚本重命名一个文件,但它必须以管理员权限运行。我的想法是,我可以调用脚本,然后输入相应的凭据。

对于测试,我在
~/test Dir/test.sh
中创建了一个脚本。以下是对我有效的方法:

cygstart bash \"/home/cxw/Test\ Dir/test.sh\"
开头和结尾的
\“
是独立的双引号,将它们之间的内容包装起来,作为一个参数保存在一起

问题是这些参数被放入了Windows中,最终在空白处拆分参数。要查看正在运行的确切命令,请使用
cygstart-v

上述操作的结果是一个如下的
ShellExecute
调用:

ShellExecute(NULL, "(null)", "bash", ""/home/cxw/Test Dir/test.sh"", "(null)", 1)
注意成对的双引号:外部引号由
cygstart-v
打印,内部引号是
\“
以保持脚本名称在一起


我列出了
/home/cxw
而不是
~
,因为
~
不适合我。如果需要,您可以使用
cygpath-a
获取绝对路径。

Holy Crabst!我知道这与逃避某些事情有关,但是,以我的生命来说,我不知道是什么。非常感谢!特别是关于发生了什么的附加信息。
FILE_PATH="/home/FirstName LastName/bin/script.sh"
cygstart bash "${FILE_PATH}"
FILE_PATH="/home/FirstName LastName/bin/script.sh"
cygstart bash ${FILE_PATH}
FILE_PATH="/home/FirstName LastName/bin/script.sh"
MY_COMM=$(cygstart bash "$FILE_PATH")
eval $MY_COMM
cygstart bash \"/home/cxw/Test\ Dir/test.sh\"
ShellExecute(NULL, "(null)", "bash", ""/home/cxw/Test Dir/test.sh"", "(null)", 1)