为什么“time”在基本 Bash 脚本上不起作用?

为什么“time”在基本 Bash 脚本上不起作用?

echo -e '#!/bin/bash\nsleep 10' > time_test.sh && chmod +x time_test.sh && time time_test.sh

time_test.sh: No such file or directory

real    0m0.186s
user    0m0.105s
sys     0m0.074s

我肯定错过了什么..?

编辑:我错过了该错误,部分原因是我忽略了非示例脚本中的错误(现在已添加)。其寓意似乎是,以某种方式运行脚本的命令需要它的位置,而其他内置命令则cat不需要。所以,也许更好的问题是,哪些命令需要位置的正确定义,或者我想只是尝试和错误,如果出现错误则无法找到脚本,以添加./或路径信息..我假设任何失败而没有被标记为可执行的。我想知道人们使用哪些其他常见命令遇到这种情况。

答案1

这已经在评论中得到了回答,但我会在这里回答,因为你似乎错过了。

当您运行命令时,它会在变量中列出的目录中搜索命令文件$PATH(除非该命令是别名或 shell 函数)。这通常不包括当前工作目录(这与 MS-Windows 不同),因为这会导致安全问题,例如创建一个名为ls.

time ./time_test.sh解决方案:使用not with运行脚本time time_test.sh。 (注意:文件不应以 结尾.sh,这是不好的形式,并且会泄漏实现细节。)

相关内容