«Команда не найдена» при запуске сценария оболочки. Что я сломал?

8

Я на 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
Закрытие Ковбой
источник

Ответы:

19

Абсолютно ничего. Только исполняемые файлы в одном из каталогов $PATHмогут быть запущены напрямую, и .(обычно) никогда не в $PATH. Укажите путь к исполняемому файлу , то есть ./grr.sh.

Игнасио Васкес-Абрамс
источник
3
+1. Также следует отметить, что текущий каталог находится в пути в системах Windows по умолчанию и имеет самый высокий приоритет. Это принципиальное различие, вероятно, является источником путаницы спрашивающего.
afrazier
Вы были первыми на 9 секунд! Спасибо!
Закрытие Ковбой
Вы сохраняете мой
MacBook
7

Расположение grr.sh в $PATHпеременной? Если нет, вам нужно будет ввести:

./grr.sh

если вы находитесь в той же папке, что и grr.sh. Если нет, то укажите полный путь к нему.

Кэм Джексон
источник
6

разрешения для файла неверны. Попробуйте следующие команды:

  $ chmod 777 file.sh
  $ ./file.sh
бункер
источник
0

Да, и что ./grr.sh означает, что в этом каталоге выполните команду grr.sh. Сингл. значит в рабочем каталоге. В противном случае ваша оболочка предполагает, что вы пытаетесь запустить команду в вашем $ PATH.

Натан
источник