Con*_*nda 13 bash path executable shell-script strace
我在 $HOME/bin 中有一个文件(在你问之前,是的,它在我的路径中)test我已经确认当我使用文件的完整路径运行它时可以正常执行。但是,当我不以这种方式运行时,我会遇到一个非常奇怪的问题。当我test在终端中运行时,它什么也不做并立即返回。我知道这不是查找文件的问题,原因如下:
没有错误信息。通常,如果找不到文件或无法执行文件,则会打印出一条消息。
运行which test仍然返回正确的文件路径。
可能是最奇怪的 - 脚本在运行时运行良好strace。我试着用strace看看我是否能弄清楚发生了什么,但是当我用 运行它时strace,它按预期工作,有 0 个问题。
ilk*_*chu 45
test使用起来很不幸,它是条件测试的标准实用程序。(它实际上是与in相同的命令,它只是看起来像一个语法的东西,但实际上只是一个普通的命令。)[if [ ... ]
test也内置在例如 Bash 中,因此运行时test永远不会从路径中查找您的二进制文件。
bash$ help test | head
test: test [expr]
Evaluate conditional expression.
Exits with a status of 0 (true) or 1 (false) depending on
the evaluation of EXPR. Expressions may be unary or binary.
[...]
Run Code Online (Sandbox Code Playgroud)
test 没有参数只返回 1 (false)。
运行strace test不涉及内置的 shell,因为strace它本身不实现任何实用程序。它只是使用它在您的PATH. 请注意,您可能test在/bin/testor 中有标准/usr/bin/test,因此如果它是第一个 in PATH,strace则会运行 run 。
在我的 Bash 上,which也是一个外部命令,所以它也不知道内置命令。另一方面,该type命令内置于 shell 中,并且type test会显示test is a shell builtin.
另请参阅:为什么不使用“which”?那用什么?
| 归档时间: |
|
| 查看次数: |
1937 次 |
| 最近记录: |