看来我的 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
Run Code Online (Sandbox Code Playgroud)
是的,它位于 /usr/sh。我把它放在那里。
sh
但正如你所看到的,当我指示执行它时,它工作得很好。是什么赋予了?
我认为不$PATH
适用,但在一些试图解决这个问题的搜索结果中,人们提出了这样的要求:
% echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
Run Code Online (Sandbox Code Playgroud)
造成这种情况的原因可能是以下几个原因之一。列出最常见的:
chmod a+x foo.sh
授予所有用户执行权限。which sh
并复制结果#!
\n
。诸如此类的文本编辑器nano
允许您通过选择Write-out
然后按下Alt+D
以关闭 DOS 格式来进行转换。诸如此类的实用程序dos2unix
可以直接在命令行上转换文件(尽管可能需要先安装)。 归档时间: |
|
查看次数: |
6559 次 |
最近记录: |