2011-11-30 58 views
2

我在Mac OS X上编写了一个bash脚本,它创建了一个符号链接,但是当我尝试打开创建它的符号链接时,它并没有去任何地方,我得到一个错误找不到原文。bash脚本中的符号链接无法正常工作

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

我也试过这样:

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

修正了,问题出现了〜 – JPC

回答

1

假设${OriginalPath}已经存在(如果没有,嘿,这是你的问题):

一有我想买的东西看看是否看到波浪扩展是问题。将OriginalPath更改为完整路径名称(例如,/Users/jpc/PathTo/bundle1.bundle)。如果解决了这个问题,那么或者只是去解决这个问题,或者找出如何打开shell中的代字符扩展或使用环境变量${HOME}而不是代字号扩展。

不管怎样,最好不要在shell脚本中使用代字符扩展,因为您可能无法确保运行该脚本的所有用户都将其打开。

+0

这就是它,〜 – JPC

2

ln将重定向设置为您给出的重定向,所以它将被解释为相对于链接的位置。我实际上不是100%确定链接如何处理~,但我不相信bash会在引号内扩展它,并且由于它是bash扩展,而不是一般的文件系统,所以我怀疑重定向会指向实际目录名为~,这可能不存在。要么找出相对路径,要么将其展开为绝对路径。

+0

这就是它,〜 – JPC

+0

@JPC然后你可能想要接受答案。 –