"Команда не знайдена" під час запуску сценарію оболонки. Що я зламав?


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 секунд! Дякую!
Закриття ковбоя

Ви врятуєте мою
книгу-макбук

8

Чи розташування grr.sh у $PATHзмінній? Якщо ні, вам потрібно буде ввести:

./grr.sh

якщо ви перебуваєте в тій самій папці, що і grr.sh. Якщо ні, то надайте повний шлях до нього.


7

дозволи для файлу неправильні. Спробуйте виконати наступні команди:

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

0

Так, і що означає ./grr.sh, це те, що в цьому каталозі запустіть команду grr.sh. Сингл. засоби в робочому каталозі. В іншому випадку ваша оболонка передбачає, що ви намагаєтеся виконати команду у вашому $ PATH.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.