我正在开发一个 C 应用程序,该应用程序必须遍历 $PATH 才能找到二进制文件的完整路径名,并且唯一允许的依赖项是 glibc(即不能调用类似的外部程序)。在正常情况下,这只需要用冒号拆分 getenv("PATH") 并逐个检查每个目录,但我想确保涵盖所有可能的极端情况。我应该注意什么问题?特别是,是否允许相对路径、以 ~ 开头的路径扩展为 $HOME 或包含 : 字符的路径?
最佳答案
曾经让我吃惊的一件事是PATH
中的空字符串表示当前目录。 PATH
末尾或开头的两个相邻冒号或冒号表示包含当前目录。这记录在 man bash 中例如。
它也在 POSIX specification 中.
所以
PATH=:/bin
PATH=/bin:
PATH=/bin::/usr/bin
都表示当前目录在PATH
关于c - 在 Linux 上解析 $PATH 时我们必须考虑哪些极端情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121753/