Shell脚本在使用命令时运行:./ script,但不是命令:script,其中PATH =:'usr / bin':etc

时间:2012-11-28 20:40:51

标签: node.js shell zsh

我正在运行Zsh,当前目录位于我的路径中,但是在没有./的情况下使用脚本时不会运行

阅读终端中执行的这些语句以了解上下文(»是我的shell提示符):

» ls
Makefile node_modules  package.json  README.md  src test  tst
» echo $PATH
.:[all_my_other_directories]
» cat test
echo "test";
nodeunit tst/
» ./test                                                                                                                                               
test
OK: 2 assertions (1ms)
» test
» which test
./test

请注意,which test指向正确的位置,但test不会运行它。

我知道将我的本地目录放在我的路径前是一个坏主意,但我已经改变了最后使用.的路径并且它没有改变任何东西。

我非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

关键字test是保留的,因为它实际上是内置的shell。为了加剧混乱,还有一个shell 命令也称为test

使用其他名称代替=)

答案 1 :(得分:2)

@ sampson-chen是完全正确的。一个补充:检查你将使用的确切用途

type test

,它会给你

test is a shell builtin

从而解决问题。不要使用which,它总是寻找命令。 type相当于whence -v,因此您可以使用前者。