我正在编写一个简单的shell程序。当我在 mac osx 和 ubuntu 中将 /usr/bin/which 与我的 shell 一起使用时,它运行正常。当我在 Red Hat Enterprise Linux Client 6.3 版(圣地亚哥)上使用完全相同的命令时,出现以下错误:“which: no ANYCOMMANDHERE in ((null))”。
对此有任何直觉吗?我什至找不到错误的含义(如果显示我的来源会有所帮助,请告诉我)。
编辑:我的路径是(从外壳内部):
$ echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin
Run Code Online (Sandbox Code Playgroud)
谢谢,乔恩
当相应的参数是空指针时,字符串(null)
被一些 C 库替换为 printf 的%s
(字符串)转换说明符的参数,例如
char *path = 0; /* This would normally be = getenv("PATH"). */
printf ("which: no foobar in (%s)\n", path);
Run Code Online (Sandbox Code Playgroud)
您的 PATH 环境变量似乎未设置或未导出。在这些情况下getenv("PATH")
返回 0。作为最后一种可能性,您的which
实用程序可能有一个强大的错误)。
如果你说它工作正常export PATH
吗?
听起来你的PATH
环境变量是问题所在。例如,如果你which asdf
正常运行,你会得到类似的信息:
which: no asdf in (/usr/local/bin:/usr/bin:...)
Run Code Online (Sandbox Code Playgroud)
所以看起来你的 PATH 环境变量类似于(NULL)
. 另一种可能性是您的 RHEL 机器上的 which 二进制文件有问题。
归档时间: |
|
查看次数: |
5878 次 |
最近记录: |