我正在尝试为我的脚本链接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/* .
答案 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 ..