这是我的代码:
#!/usr/bin/node
console.log('HELLO')
此文件已命名为test
。没有延期。如果我尝试在我的终端中运行它,那么
$ test
没有输出。但是,如果我跑
/usr/bin/node test
我得到了所需的输出:
HELLO
为什么我的脚本没有给出相同的结果?
答案 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
那应该解决你的问题。