无法在节点环境中运行shell脚本(fish shell)

时间:2014-09-25 04:08:01

标签: shell fish

这是我的代码:

#!/usr/bin/node                                                                                                                                                      

 console.log('HELLO')

此文件已命名为test。没有延期。如果我尝试在我的终端中运行它,那么

$ test

没有输出。但是,如果我跑

/usr/bin/node test

我得到了所需的输出:

HELLO

为什么我的脚本没有给出相同的结果?

1 个答案:

答案 0 :(得分:1)

当您键入命令时,它不是绝对路径或相对路径(如../test,/ bin / test或〜/ test),则shell必须搜索可执行文件。它通过查看$ PATH中指定的目录来完成此操作。你可以打印出来:

> echo $PATH
/usr/local/bin /usr/bin /bin /usr/sbin /sbin

请注意,当前目录.不在PATH中。这是故意的:如果PATH包含.,则可能会被当前目录中的文件意外或恶意地覆盖命令。

你可以问你会得到哪个命令:

> which test
/bin/test

这就是正在运行的,以及为什么没有输出。

要运行不在PATH中的命令,请使用绝对或相对路径:

./test

那应该解决你的问题。