使用相对路径创建软链
交代环境
需要在容器镜像文件里执行创建符号链接(俗称“软链接”),容器运行时进去查看,链接报红,找不到文件。
网上搜了一边,大都使用绝对路径进行创建符号链接。绝对路径很简单,我偏要使用相对路径创建出来。
当前工作路径 /code
,config
目录下有一个 online_config.py
文件(即 /code/config/online_config.py
),欲创建链接目标为 /code/config/config.py
。
使用绝对路径
# echo $PWD # /code
ln -sf /code/config/online_config.py /code/config/config.py
# ln -sf "$PWD/config/online_config.py" "$PWD/config/config.py"
使用相对路径
思维误区:总是把前面的路径(source_file)或当前工作目录作为相对路径的参考。
The reason your example doesn't work is that it's relative to the parent directory of the symbolic link and not where ln
is run.1
「ln -s
创建链接文件,如果原始文件路径时相对路径,其相对路径的基准路径为链接文件的路径(这么理解,是通过链接文件找到源文件,因此就是以链接文件的路径为当前路径了)。」2
结论:不管 target_file
使用哪种形式的路径,在 source_file
使用相对路径的情况下,总是以 target_file
的路径作为自身(source_file
)相对路径的基准。就这么简单 🤣。
解决方案
# echo $PWD # /code
ln -sf online_config.py config/config.py
# ln -sf online_config.py /code/config/config.py # also works
References
- https://unix.stackexchange.com/a/10371.
- https://blog.csdn.net/weixin_42183399/article/details/80498750.