运行 shell 脚本时出现“命令未找到”。我破坏了什么?

运行 shell 脚本时出现“命令未找到”。我破坏了什么?

我在使用 OSX Snow Leopard。

以下是 的全部内容grr.sh

#!/bin/sh

echo wow

当我尝试从终端运行它时:

$ grr.sh
-bash: grr.sh: command not found
$ /bin/sh grr.sh
wow
$ sh grr.sh
wow
$ bash grr.sh
wow

好的。很好。我会授予它可执行权限,然后再试一次:

$ chmod +x grr.sh
$ grr.sh
-bash: grr.sh: command not found
$ chmod 755 grr.sh
$ grr.sh
-bash: grr.sh: command not found

嗯。如果我明确使用 bash,也许会起作用?我将文件的内容更改为:

#!/bin/bash

echo wow

我得到了完全相同的结果。我可能破坏了什么?!

最后一件事!如果你好奇的话...

$ which sh
/bin/sh

答案1

绝对不行。只有 中的一个目录中的可执行文件才$PATH可以直接运行,并且.(通常)永远不会在 中$PATH。指定可执行文件的路径,即./grr.sh

答案2

grr.sh 的位置是否在$PATH变量中?如果没有,则需要输入:

./grr.sh

如果您与 grr.sh 位于同一文件夹中。如果不是,请提供其完整路径。

答案3

该文件的权限错误。请尝试以下命令:

  $ chmod 777 file.sh
  $ ./file.sh

答案4

是的,./grr.sh 的意思是,在这个目录中运行 grr.sh 命令。单个 . 表示在工作目录中。否则,您的 shell 会假定您正在尝试运行 $PATH 中的命令。

相关内容