gpt4 book ai didi

linux - 提示找不到命令的 Shell 脚本。忽略shebang?

转载 作者:太空狗 更新时间:2023-10-29 12:04:46 25 4
gpt4 key购买 nike

似乎我的 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

最佳答案

造成这种情况的原因可能有多种。列出最常见的:

  1. 该文件没有可执行权限。使用 chmod a+x foo.sh 给所有用户执行权限。
  2. 您的 shebang 不正确,请仔细检查路径。使用 which sh 并在 #!
  3. 之后复制结果
  4. 您的行由 DOS 提要分隔。脚本需要用 \n 分隔。 nano 等文本编辑器允许您通过选择 Write-out 然后按 Alt+D 关闭 DOS 格式来进行转换。 dos2unix 等实用程序可以直接在命令行上转换文件(尽管可能需要先安装)。

关于linux - 提示找不到命令的 Shell 脚本。忽略shebang?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18818062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com