bash脚本中的符号链接不起作用

时间:2011-11-30 23:59:09

标签: macos bash unix symlink

我正在Mac OS X上编写一个创建符号链接的bash脚本但是当我尝试打开我创建的符号链接时,它不会去任何地方,我收到一个错误,它无法找到原始符号。< / p>

OriginalPath="~/PathTo/bundle1.bundle"
NewPath="/OtherPath/bundle1.bundle"
sudo ln -s $OriginalPath $NewPath

我也试过这个:

sudo ln -s ${OriginalPath} ${NewPath}

2 个答案:

答案 0 :(得分:3)

ln将重定向设置为您提供的重定向,因此它将相对于链接的位置进行解释。我实际上不是100%确定链接将如何处理~,但我不相信bash会在引号内扩展它,因为它是bash扩展,而不是一般的文件系统,我怀疑重定向将指向名为~的实际目录,该目录可能不存在。要么弄清楚相对路径,要么将其扩展为绝对路径。

答案 1 :(得分:1)

假设${OriginalPath}已经存在(如果不存在,嘿,那就是你的问题):

我要看的第一件事是看波浪扩展是否是问题。将OriginalPath更改为完整路径名(例如/Users/jpc/PathTo/bundle1.bundle)。如果这样可以解决问题,那么要么只是使用它,要么找出如何在shell中启用波浪号扩展或使用环境变量${HOME}而不是波形扩展。

最好不要在shell脚本中使用代字号扩展,因为您可能无法确保运行脚本的所有用户都打开它。