在路径空白壳牌脚本执行不同,这取决于目录(Shell script with whitespace

2019-09-29 02:14发布

我做了一个脚本来配酒打开Spotify的:

#!/bin/bash
DIR="/home/jorgsk/.wine/drive_c/Program Files/Spotify/"
cd "$DIR"
wine spotify.exe 2>/dev/null

我传递“$ DIR”到CD用,因为在“程序文件”空白的报价; 如果我没有引号“/home/jorgsk/.wine/drive_c/Programs”将被视为参数的CD,这显然会导致错误消息。

Spotify的,如果我从它的本地目录(/ home / jorgsk /箱)与./spotify推出上面的脚本启动正常。 然而,因为我想在任何地方,我都启动它的/ home / jorgsk /箱添加到.bashrc中的$ PATH变量。 当我写“Spotify的”从例如我的主目录,我得到错误信息

bash: /home/jorgsk/.wine/drive_c/Program: No such file or directory

这是相同的错误消息,如果从启动脚本的目录与./spotify TJE脚本时,我不包括$ DIR引号中我得到。

这是怎么回事吗?

Answer 1:

我不知道答案,但我想我可以给你,会找出问题的过程。

添加set -x有回音它运行线脚本。

 #!/bin/bash
 set -x
 DIR="/home/jorgsk/.wine/drive_c/Program Files/Spotify/"
 cd "$DIR"
 wine spotify.exe 2>/dev/null

此外,命名以外的脚本东西spotify 。 虽然它不会立即像会的问题,谁知道什么复杂的行为正在发生一次酒得到控制?



Answer 2:

我不知道为什么会这样 - 看起来像它应该工作给我。

你说这是在您的路径,但该版本实际上是被称为?

尝试运行: which spotify从你的主目录。 which命令告诉你运行该脚本的路径。



文章来源: Shell script with whitespace in path executes differently depending on directory