为什么我的 link 坏了? Bash
Why is my link broken? Bash
我正在为我的脚本尝试 link 文件在 while 循环中,但是简单的 linking 代码本身会创建一个损坏的 link。
目录结构是这样的:
main/working/script.sh
main/working/dir
main/shared/default/some_files
我的脚本有这样的代码:
ln -s ../shared/default/* dir
这会造成损坏 link。如果我进入 main/working/dir 目录并使用 ln -s ../../shared/default/* .
,我可以使 link 不损坏
那是因为你link给了一个相对路径;在你的脚本中转到 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
edit:如果您不在正确的目录中,bash 无法扩展 *
,因此您可以解决这个问题以临时更改目录:
# go to dir to make correct relative links
cd dir
ln -s $DIR/../../shared/default/* ./
cd ..
我正在为我的脚本尝试 link 文件在 while 循环中,但是简单的 linking 代码本身会创建一个损坏的 link。
目录结构是这样的:
main/working/script.sh
main/working/dir
main/shared/default/some_files
我的脚本有这样的代码:
ln -s ../shared/default/* dir
这会造成损坏 link。如果我进入 main/working/dir 目录并使用 ln -s ../../shared/default/* .
那是因为你link给了一个相对路径;在你的脚本中转到 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
edit:如果您不在正确的目录中,bash 无法扩展 *
,因此您可以解决这个问题以临时更改目录:
# go to dir to make correct relative links
cd dir
ln -s $DIR/../../shared/default/* ./
cd ..