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

发布于 2024-09-25 18:03:52 字数 686 浏览 7 评论 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 重置为不包含符号链接的路径名。

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

这些听起来都不跟我所看到的完全一样。

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

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

我可以想出几种方法来“消除”这种影响,但我需要知道为什么会发生这种情况。

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

I'm seeing weird behavior when I run "ssh " to a Linux system. I tracked it down part way to a difference in bash when started in posix mode.

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

The bash man page has these items under posix mode:

--> When the cd builtin is invoked in logical mode, and the pathname constructed from $PWD and the directory name supplied as an argument does not refer to an existing directory, cd will fail instead of falling back to physical mode.

--> When the pwd builtin is supplied the -P option, it resets $PWD to a pathname containing no symlinks.

--> The pwd builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the -P option.

none of those sounds exactly like what I'm seeing.

I don't seem to have any special PWD-related variables set in start up files.
I know that --posix controls which start up files are used.

Is there a variable that explicitly controls like kind of symlink chasing?

I can think of several ways to "undo" this effect, but I need to know why it's happening.

I'm using ssh to run make, and then make is using pwd, and THAT pwd is
coming up with the wrong answer. It must be taking it directly from an ENV setting.
I'd like to find some docs someplace about what's going on.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆梦 2024-10-02 18:03:52

如果您设置 -o | grepphysical并将其设置为on,它与-P相同。

开启:

set -o physical

set -P

关闭:

set +o physical

set +P

检查 cdpwd 是否被重新定义:

type -a cd pwd

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

If you do set -o | grep physical and that's set to on, it's the same as -P.

To turn on:

set -o physical

or

set -P

to turn off:

set +o physical

or

set +P

Check to see if cd or pwd are redefined:

type -a cd pwd

There are circumstances where pwd and $PWD won't be in sync. When in doubt, use pwd (as in `$(pwd)).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文