当我将“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设置中获取。
我想找一些关于发生了什么的文档。
答案 0 :(得分: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)
中所述)。