开发者

Shell script with whitespace in path executes differently depending on directory

I have made a script to open Spotify with wine:

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

I'm passing "$DIR" to cd with quotes because of the whitespace in "Program Files"; if I don't have the quotes "/home/jorgsk/.wine/drive_c/Programs" will be considered as the argument to cd, which obviously will result in an error message.

Spotify starts fine if I launch the above script from its local directory (/home/jorgsk/bin) with ./spotify. However, since I wish to launch it from wherever, I have /home/jorgsk/bin added to the $PATH variable in .bashrc. When I write "spotify" from for example my home directory, I get the error message

bash: /home/jorgsk/.wine/drive_c/Program: No 开发者_如何学JAVAsuch file or directory

which is the same error message I get if I don't include $DIR in quotes when launching tje script with ./spotify from the script's directory.

What is happening here?


I don't know the answer but I think I can give you a procedure that will identify the issue.

Add set -x to have the script echo the lines it is running.

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

Also, name the script something other than spotify. Although it doesn't immediately look like it would matter, who knows what complex behavior is happening once wine gets control?


I'm not sure why this is happening - looks like it should work to me.

You say this is in your path but is that the version that is actually being called?

Try running: which spotify from your home directory. The which command tells you the path of the script that runs.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜