如果它是符号链接,如何在 Rust 中获取当前工作目录
How to get the current working directory in Rust if it is a symlink
如果有一个目录/tmp/foo/bar
和一个目录/tmp/bar
是link到/tmp/foo/bar
用ln -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 调用的。
如果有一个目录/tmp/foo/bar
和一个目录/tmp/bar
是link到/tmp/foo/bar
用ln -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 调用的。