我制作了一个用葡萄酒打开Spotify的脚本:
#!/bin/bash
DIR="/home/jorgsk/.wine/drive_c/Program Files/Spotify/"
cd "$DIR"
wine spotify.exe 2>/dev/null
由于“Program Files”中的空格,我将“$ DIR”传递给带引号的cd;如果我没有引号“/home/jorgsk/.wine/drive_c/Programs”将被视为cd的参数,这显然会导致错误信息。
如果我使用./spotify从其本地目录(/ home / jorgsk / bin)启动上述脚本,Spotify就会正常运行。但是,由于我希望从任何地方启动它,我将/ home / jorgsk / bin添加到.bashrc中的$ PATH变量中。当我从例如我的主目录中写“spotify”时,我收到错误消息
bash: /home/jorgsk/.wine/drive_c/Program: No such file or directory
当我从脚本目录启动带有./spotify的脚本时,如果我没有在引号中包含$ DIR,那么我得到的错误消息就是一样的。
这里发生了什么?
答案 0 :(得分:0)
我不确定为什么会这样 - 看起来它应该对我有用。
你说这是在你的路径中,但是实际被调用的版本是什么?
尝试从您的主目录运行:which spotify
。 which命令告诉您运行的脚本的路径。
答案 1 :(得分:0)
我不知道答案,但我想我可以给你一个识别问题的程序。
添加set -x
让脚本回显它正在运行的行。
#!/bin/bash
set -x
DIR="/home/jorgsk/.wine/drive_c/Program Files/Spotify/"
cd "$DIR"
wine spotify.exe 2>/dev/null
另外,将脚本命名为spotify
以外的其他内容。虽然它不会立即看起来像是重要的,谁知道一旦葡萄酒得到控制后会发生什么样的复杂行为呢?