Почему я должен измениться в свою частную папку мусорного ведра для выполнения .sh сценария?

У меня есть частная папка мусорного ведра в моем корневом каталоге. Это, находится также в моем пути. Если я пытаюсь запустить скрипт откуда-либо еще в моей системе, но в той папке, я добираюсь

  sh: 0: Can't open [name of script].sh

Если я выполняю что-то как sh ~/bin/killwine.sh работает!

Я хотел бы смочь выполнить сценарий отовсюду, не изменяя мое местоположение.

Что я делаю неправильно?

2
задан 8 December 2014 в 10:42

3 ответа

Когда Вы тип sh somescript.sh, система ищет sh в пути не somescript.sh.

Тогда система находит sh и передает аргумент somescript.sh ему. Тогда sh ищет somescript.sh в текущей папке или в указанной папке ~/bin/, если Вы ввели

sh ~/bin/somescirpt.sh. 

, Чтобы заставить систему искать somescript.sh в пути, используют его непосредственно в качестве команды, без sh префикса. Другими словами, введите в терминале:

somescript.sh

Для этого для работы, somescript.sh потребности, расположенные в папке в пути, в этом случае ~/bin/ и это должен быть исполняемый файл, как указали другие. Я включаю команду ниже для полноты.

chmod +x ~/bin/somescript.sh

Также видят , Как я выполняю .sh файлы? и

, Как выполнить сценарии, не вводя полный путь?

Hope это помогает

4
ответ дан 6 October 2019 в 07:25

Поскольку darent и user68186 объяснил, что сценарий не может иметь исполняемого набора битов. Если бит установлен, можно выполнить сценарий, если Вы находитесь в каталоге, сценарий находится в просто путем добавления префикса его . / . Например:

./myscript.sh

у Вас не должно быть .sh в конце имени файла также, но это - хорошая форма для добавления .sh для уведомления других, это - сценарий оболочки.

0
ответ дан 6 October 2019 в 07:25

Как сказанный комментарий, Ваш сценарий не может быть отмечен для выполнения. То, когда Вы называете его канавкой sh, что Вы делаете, говорит оболочке читать свое содержание и выполнять функции в текстовом файле, не то же как вызов исполняемого файла непосредственно. Попробуйте это:

chmod +x ~/bin/killwine.sh

Затем попытайтесь выполнить его снова из другого каталога. Кроме того, удостоверьтесь, что первая строка на сценарии содержит это, таким образом, система знает, что это должно быть выполнено оболочкой:

#!/bin/sh
0
ответ дан 6 October 2019 в 07:25

Другие вопросы по тегам:

Похожие вопросы: