看起来我的shebang被忽略了。当我尝试执行我写的一个shell脚本时,我得到了一个错误:
% ls -alh /usr/sh
-r-xr-xr-x 1 root 1011 139k Sep 16 01:29 sh
% ls -alh foo.sh
-rwxr-xr-x 1 george george 21B Sep 16 00:59 foo.sh
% cat ./foo.sh
#!/usr/sh
echo "lol"
% ./foo.sh
./foo.sh: Command not found.
% sh ./foo.sh
lol
是的,它在 /usr/sh 目录下。我把它放在那里了。
但是,当我指示 sh
执行它时,可以看到它完全正常工作。怎么回事?
我不认为 $PATH
适用于此问题,但在一些解决此问题的搜索结果中,人们已经要求它:
% echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
usr
文件夹里真的有sh
吗? - Pavel Anossovsh
可执行文件在usr
中,并且该文件对当前用户可执行。解决方案是换行符采用DOS格式,将其转换为nix格式使用nano
即可。 - deed02392