Для файлов .sh требуется `sh app.sh` даже с линией` #! / bin / bash`

У меня создается впечатление, что если я включу строку

#!/bin/bash

в начале моего файла, она будет распознана как сценарий bash, который я могу запустить только с помощью

file.sh

вместо

sh file.sh

Но в моем случае file.sh дает что-то вроде test.sh дает test.sh: command not found. Почему это?

UPDATE

Я замечаю, что мне нужно использовать ./. Но я думал, что он все равно будет выглядеть в текущем каталоге?

./test.sh
6
задан 13 August 2011 в 18:48

16 ответов

Сначала вам нужно убедиться, что файл выполним:

chmod +x file.sh

И затем, чтобы запустить его, вам либо нужно поместить его в свой PATH, то есть один из каталогов файлов, которые ищет ОС при поиске файлов, которые вы можете найти с помощью echo $PATH, или вам нужно ввести:

./file.sh

Скорее чем просто тип file.sh.

Вы можете просто набрать file.sh, если это в вашей PATH, которую я рекомендую. Хорошее место в ~/bin. Создайте эту папку, если ее там нет, и под Ubuntu она будет добавлена ​​к вашему пути при входе в систему.

12
ответ дан 25 May 2018 в 19:21

Сначала вам нужно убедиться, что файл выполним:

chmod +x file.sh

И затем, чтобы запустить его, вам либо нужно поместить его в свой PATH, то есть один из каталогов файлов, которые ищет ОС при поиске файлов, которые вы можете найти с помощью echo $PATH, или вам нужно ввести:

./file.sh

Скорее чем просто тип file.sh.

Вы можете просто набрать file.sh, если это в вашей PATH, которую я рекомендую. Хорошее место в ~/bin. Создайте эту папку, если ее там нет, и под Ubuntu она будет добавлена ​​к вашему пути при входе в систему.

12
ответ дан 25 July 2018 в 21:28

Сначала вам нужно убедиться, что файл выполним:

chmod +x file.sh

И затем, чтобы запустить его, вам либо нужно поместить его в свой PATH, то есть один из каталогов файлов, которые ищет ОС при поиске файлов, которые вы можете найти с помощью echo $PATH, или вам нужно ввести:

./file.sh

Скорее чем просто тип file.sh.

Вы можете просто набрать file.sh, если это в вашей PATH, которую я рекомендую. Хорошее место в ~/bin. Создайте эту папку, если ее там нет, и под Ubuntu она будет добавлена ​​к вашему пути при входе в систему.

12
ответ дан 31 July 2018 в 11:17

Сначала вам нужно убедиться, что файл выполним:

chmod +x file.sh

И затем, чтобы запустить его, вам либо нужно поместить его в свой PATH, то есть один из каталогов файлов, которые ищет ОС при поиске файлов, которые вы можете найти с помощью echo $PATH, или вам нужно ввести:

./file.sh

Скорее чем просто тип file.sh.

Вы можете просто набрать file.sh, если это в вашей PATH, которую я рекомендую. Хорошее место в ~/bin. Создайте эту папку, если ее там нет, и под Ubuntu она будет добавлена ​​к вашему пути при входе в систему.

12
ответ дан 31 July 2018 в 12:17

Сначала вам нужно убедиться, что файл выполним:

chmod +x file.sh

И затем, чтобы запустить его, вам либо нужно поместить его в свой PATH, то есть один из каталогов файлов, которые ищет ОС при поиске файлов, которые вы можете найти с помощью echo $PATH, или вам нужно ввести:

./file.sh

Скорее чем просто тип file.sh.

Вы можете просто набрать file.sh, если это в вашей PATH, которую я рекомендую. Хорошее место в ~/bin. Создайте эту папку, если ее там нет, и под Ubuntu она будет добавлена ​​к вашему пути при входе в систему.

12
ответ дан 2 August 2018 в 03:06

Сначала вам нужно убедиться, что файл выполним:

chmod +x file.sh

И затем, чтобы запустить его, вам либо нужно поместить его в свой PATH, то есть один из каталогов файлов, которые ищет ОС при поиске файлов, которые вы можете найти с помощью echo $PATH, или вам нужно ввести:

./file.sh

Скорее чем просто тип file.sh.

Вы можете просто набрать file.sh, если это в вашей PATH, которую я рекомендую. Хорошее место в ~/bin. Создайте эту папку, если ее там нет, и под Ubuntu она будет добавлена ​​к вашему пути при входе в систему.

12
ответ дан 4 August 2018 в 18:57

Сначала вам нужно убедиться, что файл выполним:

chmod +x file.sh

И затем, чтобы запустить его, вам либо нужно поместить его в свой PATH, то есть один из каталогов файлов, которые ищет ОС при поиске файлов, которые вы можете найти с помощью echo $PATH, или вам нужно ввести:

./file.sh

Скорее чем просто тип file.sh.

Вы можете просто набрать file.sh, если это в вашей PATH, которую я рекомендую. Хорошее место в ~/bin. Создайте эту папку, если ее там нет, и под Ubuntu она будет добавлена ​​к вашему пути при входе в систему.

12
ответ дан 6 August 2018 в 03:19

Сначала вам нужно убедиться, что файл выполним:

chmod +x file.sh

И затем, чтобы запустить его, вам либо нужно поместить его в свой PATH, то есть один из каталогов файлов, которые ищет ОС при поиске файлов, которые вы можете найти с помощью echo $PATH, или вам нужно ввести:

./file.sh

Скорее чем просто тип file.sh.

Вы можете просто набрать file.sh, если это в вашей PATH, которую я рекомендую. Хорошее место в ~/bin. Создайте эту папку, если ее там нет, и под Ubuntu она будет добавлена ​​к вашему пути при входе в систему.

12
ответ дан 7 August 2018 в 21:00

Вам нужно запустить его с ./file.sh, потому что текущий каталог не находится в PATH.

Если этого недостаточно, потому что вы пропустили, что предлагает frabjous, chmod a+x, вам следует начинать программы, начинающиеся с shebang #!/bin/bash с

bash file.sh

not

sh file.sh

, даже если sh является символической ссылкой на / bin / bash.

Оболочка проверяет, как она была вызвана, и может быть вызвана как sh для работы в совместимом режиме, поэтому она может не справиться с некоторыми bashisms, которые будут работать, если вызывается как bash file.sh.

Это не ваша проблема, но может стать одной, если вы не знаете этого тонкого различия.

5
ответ дан 25 May 2018 в 19:21

Вам нужно запустить его с ./file.sh, потому что текущий каталог не находится в PATH.

Если этого недостаточно, потому что вы пропустили, что предлагает frabjous, chmod a+x, вам следует начинать программы, начинающиеся с shebang #!/bin/bash с

bash file.sh

not

sh file.sh

, даже если sh является символической ссылкой на / bin / bash.

Оболочка проверяет, как она была вызвана, и может быть вызвана как sh для работы в совместимом режиме, поэтому она может не справиться с некоторыми bashisms, которые будут работать, если вызывается как bash file.sh.

Это не ваша проблема, но может стать одной, если вы не знаете этого тонкого различия.

5
ответ дан 25 July 2018 в 21:28

Вам нужно запустить его с ./file.sh, потому что текущий каталог не находится в PATH.

Если этого недостаточно, потому что вы пропустили, что предлагает frabjous, chmod a+x, вам следует начинать программы, начинающиеся с shebang #!/bin/bash с

bash file.sh

not

sh file.sh

, даже если sh является символической ссылкой на / bin / bash.

Оболочка проверяет, как она была вызвана, и может быть вызвана как sh для работы в совместимом режиме, поэтому она может не справиться с некоторыми bashisms, которые будут работать, если вызывается как bash file.sh.

Это не ваша проблема, но может стать одной, если вы не знаете этого тонкого различия.

5
ответ дан 31 July 2018 в 11:17

Вам нужно запустить его с ./file.sh, потому что текущий каталог не находится в PATH.

Если этого недостаточно, потому что вы пропустили, что предлагает frabjous, chmod a+x, вам следует начинать программы, начинающиеся с shebang #!/bin/bash с

bash file.sh

not

sh file.sh

, даже если sh является символической ссылкой на / bin / bash.

Оболочка проверяет, как она была вызвана, и может быть вызвана как sh для работы в совместимом режиме, поэтому она может не справиться с некоторыми bashisms, которые будут работать, если вызывается как bash file.sh.

Это не ваша проблема, но может стать одной, если вы не знаете этого тонкого различия.

5
ответ дан 31 July 2018 в 12:17

Вам нужно запустить его с ./file.sh, потому что текущий каталог не находится в PATH.

Если этого недостаточно, потому что вы пропустили, что предлагает frabjous, chmod a+x, вам следует начинать программы, начинающиеся с shebang #!/bin/bash с

bash file.sh

not

sh file.sh

, даже если sh является символической ссылкой на / bin / bash.

Оболочка проверяет, как она была вызвана, и может быть вызвана как sh для работы в совместимом режиме, поэтому она может не справиться с некоторыми bashisms, которые будут работать, если вызывается как bash file.sh.

Это не ваша проблема, но может стать одной, если вы не знаете этого тонкого различия.

5
ответ дан 2 August 2018 в 03:06

Вам нужно запустить его с ./file.sh, потому что текущий каталог не находится в PATH.

Если этого недостаточно, потому что вы пропустили, что предлагает frabjous, chmod a+x, вам следует начинать программы, начинающиеся с shebang #!/bin/bash с

bash file.sh

not

sh file.sh

, даже если sh является символической ссылкой на / bin / bash.

Оболочка проверяет, как она была вызвана, и может быть вызвана как sh для работы в совместимом режиме, поэтому она может не справиться с некоторыми bashisms, которые будут работать, если вызывается как bash file.sh.

Это не ваша проблема, но может стать одной, если вы не знаете этого тонкого различия.

5
ответ дан 4 August 2018 в 18:57

Вам нужно запустить его с ./file.sh, потому что текущий каталог не находится в PATH.

Если этого недостаточно, потому что вы пропустили, что предлагает frabjous, chmod a+x, вам следует начинать программы, начинающиеся с shebang #!/bin/bash с

bash file.sh

not

sh file.sh

, даже если sh является символической ссылкой на / bin / bash.

Оболочка проверяет, как она была вызвана, и может быть вызвана как sh для работы в совместимом режиме, поэтому она может не справиться с некоторыми bashisms, которые будут работать, если вызывается как bash file.sh.

Это не ваша проблема, но может стать одной, если вы не знаете этого тонкого различия.

5
ответ дан 6 August 2018 в 03:19

Вам нужно запустить его с ./file.sh, потому что текущий каталог не находится в PATH.

Если этого недостаточно, потому что вы пропустили, что предлагает frabjous, chmod a+x, вам следует начинать программы, начинающиеся с shebang #!/bin/bash с

bash file.sh

not

sh file.sh

, даже если sh является символической ссылкой на / bin / bash.

Оболочка проверяет, как она была вызвана, и может быть вызвана как sh для работы в совместимом режиме, поэтому она может не справиться с некоторыми bashisms, которые будут работать, если вызывается как bash file.sh.

Это не ваша проблема, но может стать одной, если вы не знаете этого тонкого различия.

5
ответ дан 7 August 2018 в 21:00

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

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