如果它是符号链接,如何在 Rust 中获取当前工作目录

How to get the current working directory in Rust if it is a symlink

如果有一个目录/tmp/foo/bar和一个目录/tmp/bar是link到/tmp/foo/barln -s /tmp/foo/bar /tmp/bar创建的,那么如果当前工作目录是 /tmp/bar,Rust 的 std::env::current_dir 将 return /tmp/foo/bar 而不是 /tmp/bar?

有没有办法在不解析符号 links 的情况下获取 Rust 中的当前工作目录?

根据this GitHub issue,这是不可能的。

For UNIX Rust just calls getcwd() and that behavior is documented in the POSIX spec, so it will be the same on all conforming implementations.

来自链接规范:

The pathname shall contain no components that are dot or dot-dot, or are symbolic links.

一个可能的解决方法是查看 PWD 环境变量,但它取决于 shell 来设置它,并且 shell 不需要这样做。可执行文件也可能不是从 shell 调用的。