假设您有一个目录 ~/mytool,它软链接到 /usr/local/mytool。然后cd mytool
将当前目录保留为 ~/mytool,这可能会导致脚本行为不正确。有没有办法避免这种行为?
通过谷歌搜索,我发现您可以按如下方式实现此目的:
cd $1 ; cd `pwd -P`
没有“cd”开关吗?环境变量?
答案1
如果您set -P
在 bash 中输入所有命令(例如 cd、pwd),它们都会遵循物理路径。否则,您可以使用cd -P
和pwd -P
来临时更改默认行为。
来自 bash 的手册页:
-P If set, the shell does not follow symbolic links when executing commands such as cd that change the cur-
rent working directory. It uses the physical directory structure instead. By default, bash follows the
logical chain of directories when performing commands which change the current directory.
为了使其永久存在,请将其放入您的~/.bashrc
文件中。
答案2
“cd” 是大多数 shell 的内置命令。在 bash 中,您可以通过添加
set -P
在启动脚本(例如 .bashrc)中。
答案3
在 Ubuntu/Debian(不确定 BSD 是否如此)上,cd -P symlink
将我置于已解析的符号链接路径中。(与 pwd -P 的行为相同)
测试使用:
mkdir a
ln -s a b
cd -P b && pwd