为什么我的链接坏了?巴什

时间:2015-07-01 08:03:32

标签: bash shell symlink

我正在尝试为我的脚本链接while循环中的文件,但只是简单的链接代码本身会创建一个断开的链接。

目录结构如下:

main/working/script.sh
main/working/dir
main/shared/default/some_files

我的脚本有以下代码:

ln -s ../shared/default/* dir

这会创建断开的链接。如果我进入main / working / dir目录并使用ln -s ../../shared/default/* .

,我可以使链接不被破坏

1 个答案:

答案 0 :(得分:1)

那是因为你链接到相对路径;在你的脚本里面转到main / working /:

cd main/working/
ln -s ../shared/default/* dir

使用绝对路径:

ln -s /absolute/path/to/shared/default/* dir

您甚至可能deduce the path where your script is located并使用该路径:

DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
ln -s $DIR/../../shared/default/* dir

编辑:如果您不在正确的目录中,bash无法展开*,因此您可以解决此问题以临时更改目录:

# go to dir to make correct relative links
cd dir
ln -s $DIR/../../shared/default/* ./
cd ..