В нашей школьной системе мы можем запускать файлы сценариев без ввода bash или csh или того, что у вас нет, указывая, какой тип скрипта он есть. Однако на Ubuntu мне нужно ввести bash script.bash, например. Это всегда необходимо в Ubuntu, или это какая-то настройка, которую я могу изменить?
Другие уже упомянули: важно иметь /bin/bash, если вы используете функции bash, также /bin/sh был привязан к /bin/bash, но теперь-в-днях (насколько это возможно Я заметил), он символически связан с dash, который не обеспечит совместимость с bash, только POSIX sh. Это очень важно, даже довольно дорогое программное обеспечение в нашей фирме имеет эту проблему: скрипты содержат #!/bin/sh в качестве первой строки, но также зависят от функциональности bash.
Другие уже упомянули: важно иметь /bin/bash, если вы используете функции bash, также /bin/sh был привязан к /bin/bash, но теперь-в-днях (насколько это возможно Я заметил), он символически связан с dash, который не обеспечит совместимость с bash, только POSIX sh. Это очень важно, даже довольно дорогое программное обеспечение в нашей фирме имеет эту проблему: скрипты содержат #!/bin/sh в качестве первой строки, но также зависят от функциональности bash.
Другие уже упомянули: важно иметь /bin/bash, если вы используете функции bash, также /bin/sh был привязан к /bin/bash, но теперь-в-днях (насколько это возможно Я заметил), он символически связан с dash, который не обеспечит совместимость с bash, только POSIX sh. Это очень важно, даже довольно дорогое программное обеспечение в нашей фирме имеет эту проблему: скрипты содержат #!/bin/sh в качестве первой строки, но также зависят от функциональности bash.
Другие уже упомянули: важно иметь /bin/bash, если вы используете функции bash, также /bin/sh был привязан к /bin/bash, но теперь-в-днях (насколько это возможно Я заметил), он символически связан с dash, который не обеспечит совместимость с bash, только POSIX sh. Это очень важно, даже довольно дорогое программное обеспечение в нашей фирме имеет эту проблему: скрипты содержат #!/bin/sh в качестве первой строки, но также зависят от функциональности bash.
Другие уже упомянули: важно иметь /bin/bash, если вы используете функции bash, также /bin/sh был привязан к /bin/bash, но теперь-в-днях (насколько это возможно Я заметил), он символически связан с dash, который не обеспечит совместимость с bash, только POSIX sh. Это очень важно, даже довольно дорогое программное обеспечение в нашей фирме имеет эту проблему: скрипты содержат #!/bin/sh в качестве первой строки, но также зависят от функциональности bash.
Другие уже упомянули: важно иметь /bin/bash, если вы используете функции bash, также /bin/sh был привязан к /bin/bash, но теперь-в-днях (насколько это возможно Я заметил), он символически связан с dash, который не обеспечит совместимость с bash, только POSIX sh. Это очень важно, даже довольно дорогое программное обеспечение в нашей фирме имеет эту проблему: скрипты содержат #!/bin/sh в качестве первой строки, но также зависят от функциональности bash.
Другие уже упомянули: важно иметь /bin/bash, если вы используете функции bash, также /bin/sh был привязан к /bin/bash, но теперь-в-днях (насколько это возможно Я заметил), он символически связан с dash, который не обеспечит совместимость с bash, только POSIX sh. Это очень важно, даже довольно дорогое программное обеспечение в нашей фирме имеет эту проблему: скрипты содержат #!/bin/sh в качестве первой строки, но также зависят от функциональности bash.
Другие уже упомянули: важно иметь /bin/bash, если вы используете функции bash, также /bin/sh был привязан к /bin/bash, но теперь-в-днях (насколько это возможно Я заметил), он символически связан с dash, который не обеспечит совместимость с bash, только POSIX sh. Это очень важно, даже довольно дорогое программное обеспечение в нашей фирме имеет эту проблему: скрипты содержат #!/bin/sh в качестве первой строки, но также зависят от функциональности bash.
Другие уже упомянули: важно иметь /bin/bash, если вы используете функции bash, также /bin/sh был привязан к /bin/bash, но теперь-в-днях (насколько это возможно Я заметил), он символически связан с dash, который не обеспечит совместимость с bash, только POSIX sh. Это очень важно, даже довольно дорогое программное обеспечение в нашей фирме имеет эту проблему: скрипты содержат #!/bin/sh в качестве первой строки, но также зависят от функциональности bash.
./ script
или полного пути или чего-то еще. Сценарий
может не работать (он работает, если каталог находится в $ PATH
, например / usr / bin
), так как в системах UNIX это не chmod + x script
будет создан это исполняемый файл. #! / bin / bash
в качестве первой строки в вашем скрипте. Также убедитесь, что он не редактируется с помощью какого-либо редактора Windows, поскольку они часто используют «тип DOS» для eol (конец строки), который отличается от UNIX (если контрольный список выше в порядке, но вы получили «плохое» интерпретатор: нет такого файла или каталога "или так, даже если это / bin / bash, это часто является причиной, так как непечатаемый - так что вы обычно этого не видите - \r будет рассматриваться как часть путь переводчика) Другие уже упомянули: важно использовать / bin / bash
, если вы используете функции bash, также / bin / sh [ ! d7] был привязан к
/ bin / bash
, но теперь-в-днях (насколько я заметил) он символически связан с тире
, который не обеспечит совместимость с bash, только POSIX sh
. Это очень важно, даже у довольно дорогого программного обеспечения у нашей фирмы есть эта проблема: скрипты содержат #! / Bin / sh
в качестве первой строки, но также зависят от функциональности bash.
#! / Usr / bin / env bash
, который немного более портативен.
– Sparhawk
9 March 2014 в 20:46
Убедитесь, что первая строка файла читается:
#!/bin/bash
Если shebang - #!/bin/sh, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если /bin/sh является символической ссылкой на bash, bash будет работать в режиме совместимости с POSIX при запуске как sh, отключив некоторые (но не все) функции bash.
Вам также нужно будет сделать конечно скрипт исполняемый, конечно.
Альтернативный, сильно обескураженный способ добавляет . к PATH.
PATH=".:$PATH"
или
PATH="$PATH:."
Проблема с этим подходом заключается в том, что в первом case, любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены.
Рассмотрим следующее:
#!/bin/bash
./my_malicious_script &>/dev/null
/bin/ls "$@"
Скорее всего, вы даже не заметите, пока не станет слишком поздно.
Убедитесь, что первая строка файла читается:
#!/bin/bash
Если shebang - #!/bin/sh, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если /bin/sh является символической ссылкой на bash, bash будет работать в режиме совместимости с POSIX при запуске как sh, отключив некоторые (но не все) функции bash.
Вам также нужно будет сделать конечно скрипт исполняемый, конечно.
Альтернативный, сильно обескураженный способ добавляет . к PATH.
PATH=".:$PATH"
или
PATH="$PATH:."
Проблема с этим подходом заключается в том, что в первом case, любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены.
Рассмотрим следующее:
#!/bin/bash
./my_malicious_script &>/dev/null
/bin/ls "$@"
Скорее всего, вы даже не заметите, пока не станет слишком поздно.
Убедитесь, что первая строка файла читается:
#!/bin/bash
Если shebang - #!/bin/sh, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если /bin/sh является символической ссылкой на bash, bash будет работать в режиме совместимости с POSIX при запуске как sh, отключив некоторые (но не все) функции bash.
Вам также нужно будет сделать конечно скрипт исполняемый, конечно.
Альтернативный, сильно обескураженный способ добавляет . к PATH.
PATH=".:$PATH"
или
PATH="$PATH:."
Проблема с этим подходом заключается в том, что в первом case, любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены.
Рассмотрим следующее:
#!/bin/bash
./my_malicious_script &>/dev/null
/bin/ls "$@"
Скорее всего, вы даже не заметите, пока не станет слишком поздно.
Убедитесь, что первая строка файла читается:
#!/bin/bash
Если shebang - #!/bin/sh, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если /bin/sh является символической ссылкой на bash, bash будет работать в режиме совместимости с POSIX при запуске как sh, отключив некоторые (но не все) функции bash.
Вам также нужно будет сделать конечно скрипт исполняемый, конечно.
Альтернативный, сильно обескураженный способ добавляет . к PATH.
PATH=".:$PATH"
или
PATH="$PATH:."
Проблема с этим подходом заключается в том, что в первом case, любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены.
Рассмотрим следующее:
#!/bin/bash
./my_malicious_script &>/dev/null
/bin/ls "$@"
Скорее всего, вы даже не заметите, пока не станет слишком поздно.
Убедитесь, что первая строка файла читается:
#!/bin/bash
Если shebang - #!/bin/sh, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если /bin/sh является символической ссылкой на bash, bash будет работать в режиме совместимости с POSIX при запуске как sh, отключив некоторые (но не все) функции bash.
Вам также нужно будет сделать конечно скрипт исполняемый, конечно.
Альтернативный, сильно обескураженный способ добавляет . к PATH.
PATH=".:$PATH"
или
PATH="$PATH:."
Проблема с этим подходом заключается в том, что в первом case, любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены.
Рассмотрим следующее:
#!/bin/bash
./my_malicious_script &>/dev/null
/bin/ls "$@"
Скорее всего, вы даже не заметите, пока не станет слишком поздно.
Убедитесь, что первая строка файла читается:
#!/bin/bash
Если shebang - #!/bin/sh, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если /bin/sh является символической ссылкой на bash, bash будет работать в режиме совместимости с POSIX при запуске как sh, отключив некоторые (но не все) функции bash.
Вам также нужно будет сделать конечно скрипт исполняемый, конечно.
Альтернативный, сильно обескураженный способ добавляет . к PATH.
PATH=".:$PATH"
или
PATH="$PATH:."
Проблема с этим подходом заключается в том, что в первом case, любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены.
Рассмотрим следующее:
#!/bin/bash
./my_malicious_script &>/dev/null
/bin/ls "$@"
Скорее всего, вы даже не заметите, пока не станет слишком поздно.
Убедитесь, что первая строка файла читается:
#!/bin/bash
Если shebang - #!/bin/sh, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если /bin/sh является символической ссылкой на bash, bash будет работать в режиме совместимости с POSIX при запуске как sh, отключив некоторые (но не все) функции bash.
Вам также нужно будет сделать конечно скрипт исполняемый, конечно.
Альтернативный, сильно обескураженный способ добавляет . к PATH.
PATH=".:$PATH"
или
PATH="$PATH:."
Проблема с этим подходом заключается в том, что в первом case, любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены.
Рассмотрим следующее:
#!/bin/bash
./my_malicious_script &>/dev/null
/bin/ls "$@"
Скорее всего, вы даже не заметите, пока не станет слишком поздно.
Убедитесь, что первая строка файла читается:
#!/bin/bash
Если shebang - #!/bin/sh, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если /bin/sh является символической ссылкой на bash, bash будет работать в режиме совместимости с POSIX при запуске как sh, отключив некоторые (но не все) функции bash.
Вам также нужно будет сделать конечно скрипт исполняемый, конечно.
Альтернативный, сильно обескураженный способ добавляет . к PATH.
PATH=".:$PATH"
или
PATH="$PATH:."
Проблема с этим подходом заключается в том, что в первом case, любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены.
Рассмотрим следующее:
#!/bin/bash
./my_malicious_script &>/dev/null
/bin/ls "$@"
Скорее всего, вы даже не заметите, пока не станет слишком поздно.
Убедитесь, что первая строка файла читается:
#!/bin/bash
Если shebang - #!/bin/sh, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если /bin/sh является символической ссылкой на bash, bash будет работать в режиме совместимости с POSIX при запуске как sh, отключив некоторые (но не все) функции bash.
Вам также нужно будет сделать конечно скрипт исполняемый, конечно.
Альтернативный, сильно обескураженный способ добавляет . к PATH.
PATH=".:$PATH"
или
PATH="$PATH:."
Проблема с этим подходом заключается в том, что в первом case, любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены.
Рассмотрим следующее:
#!/bin/bash
./my_malicious_script &>/dev/null
/bin/ls "$@"
Скорее всего, вы даже не заметите, пока не станет слишком поздно.
Альтернативным, сильно обескураженным способом является добавление .
к PATH
.
PATH = ".: $ PATH"
или
PATH = "$ PATH :."
Проблема с этим подходом заключается в том, что в первом случае любая системная команда может быть переопределена исполняемыми файлами из текущего каталога, а в последнем случае неизвестные команды все равно могут быть переопределены. [ ! d8]
Рассмотрим следующее:
#! / bin / bash ./my_malicious_script & amp; gt; / dev / null / bin / ls "$ @"
Скорее всего, вы даже не заметили бы, пока не стало слишком поздно.
echo
, например, тот, который находится в вашем каталоге, будет использоваться просто потому, что этот каталог установлен в переменной PATH
перед / bin
. Shell просто ищет команды в определенных каталогах в зависимости от их порядка в PATH
и не отменяет / не уничтожает ничего. Но да, это имеет последствия
– Sergiy Kolodyazhnyy
22 July 2018 в 11:14
Убедитесь, что первая строка файла читается:
#! / bin / bash
Если shebang - #! / bin / sh
, вы не должны использовать какие-либо специфичные для bash функции, только функции POSIX. Даже если / bin / sh
является символической ссылкой на bash
, bash будет работать в режиме совместимости POSIX при запуске как sh, отключив некоторые (но не все) bash-функции. [ ! d5]
Вы также должны убедиться, что скрипт является исполняемым, конечно.