0

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

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

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

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

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

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

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

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

是否有一个变量可以像符号链接追逐一样显式控制?

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

我正在使用 ssh 运行 make,然后 make 正在使用pwd,而那个 pwd 给出了错误的答案。它必须直接从 ENV 设置中获取。我想在某个地方找到一些关于正在发生的事情的文档。

4

1 回答 1

1

如果您这样做set -o | grep physical并且设置为on,则与 相同-P

打开:

set -o physical

或者

set -P

把关掉:

set +o physical

或者

set +P

检查是否cd或被pwd重新定义:

type -a cd pwd

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

于 2010-10-04T23:38:34.983 回答