为什么posix模式的bash无法追逐我的符号链接?

时间:2010-10-04 21:40:25

标签: bash posix sh

当我将“ssh”运行到Linux系统时,我看到了奇怪的行为。当我在posix模式下启动时,我在一定程度上追踪了bash的差异。

% bash --posix
% ln -s /tmp mytmp
% cd mytmp
% pwd
/home/user/mytmp

bash手册页在posix模式下有这些项目:

- >在逻辑模式下调用cd builtin时,从$ PWD构造的路径名和作为参数提供的目录名不引用现有目录,cd将失败而不是回退到物理模式。

- >当pwd内置提供-P选项时,它会将$ PWD重置为不包含符号链接的路径名。

- > pwd内置程序验证它打印的值是否与当前目录相同,即使没有要求它使用-P选项检查文件系统。

这些听起来都不像我所看到的那样。

我似乎没有在启动文件中设置任何特殊的与PWD相关的变量。 我知道--posix控件使用哪些启动文件。

是否存在一个明确控制类似符号链接的变量?

我可以想到几种“撤消”这种效果的方法,但我需要知道它为什么会发生。

我正在使用ssh来运行make,然后make正在使用pwd,那么pwd是 拿出错误的答案。它必须直接从ENV设置中获取。 我想找一些关于发生了什么的文档。

1 个答案:

答案 0 :(得分:1)

如果您执行set -o | grep physical且设置为on,则与-P相同。

开启:

set -o physical

set -P

关闭:

set +o physical

set +P

检查是否重新定义了cdpwd

type -a cd pwd

在某些情况下,pwd$PWD不会同步。如有疑问,请使用pwd(如`$(pwd)中所述)。