Как я могу узнать, какую оболочку я использую? - PullRequest
8 голосов
/ 23 мая 2011

Я пишу сценарий оболочки.Урок, который я читаю, имеет следующую строку:

#!/usr/bin/env bash/

, но он не работает для меня.(error : no such directory)

Как узнать, какой bash я использую и где он находится?

Спасибо за любые советы и помощь.

Спасибомного.Теперь он работает .

решение - это #!/usr/bin/env bash

Еще одна проблема: почему он просто не может прочитать слово «рестарт»

мой код в начале .sh:

#!/usr/bin/env bash/
RESTART="apachectl restart"
$RESTART

у меня не работает.

Usage: /usr/local/apache2/bin/httpd [-D name] [-d directory] [-f file]
                                [-C "directive"] [-c "directive"]
                                [-k start|restart|graceful|graceful-stop|sto                                                                             p]
                                [-v] [-V] [-h] [-l] [-L] [-t] [-S]
Options:
-D name            : define a name for use in <IfDefine name> directives
-d directory       : specify an alternate initial ServerRoot
-f file            : specify an alternate ServerConfigFile
-C "directive"     : process directive before reading config files
-c "directive"     : process directive after reading config files
-e level           : show startup errors of level (see LogLevel)
-E file            : log startup errors to file
-v                 : show version number
-V                 : show compile settings
-h                 : list available command line options (this page)
-l                 : list compiled in modules
-L                 : list available configuration directives
-t -D DUMP_VHOSTS  : show parsed settings (currently only vhost settings)
-S                 : a synonym for -t -D DUMP_VHOSTS
-t -D DUMP_MODULES : show all loaded modules
-M                 : a synonym for -t -D DUMP_MODULES
-t                 : run syntax check for config files

почему это так?кажется, что он может прочитать слово перезагрузить.

Спасибо всем!Я исправил это сейчас.

решение : отредактируйте файл в unix (vim / nano и все что угодно, но не в windows)

Thank again :)

Ответы [ 6 ]

15 голосов
/ 23 мая 2011

Еще один способ: echo $SHELL.

4 голосов
/ 23 мая 2011

Если вы удалите / из bash/, он должен работать.

2 голосов
/ 23 мая 2011

Вы можете попробовать следующую команду

which bash

в оболочке. Затем положите

#!<the output of which bash>
0 голосов
/ 23 мая 2011

На самом деле лучше было бы открыть новый вопрос для вашей проблемы перезапуска.Скорее всего, вы находитесь не в каталоге, где определена команда перезапуска, или перезапуска нет в вашем пути.Попробуйте проложить весь путь.

0 голосов
/ 23 мая 2011

Удалите лишние символы, которые у вас есть в конце строк.Косая черта не требуется, и dos2unix yourscript удалит нежелательные CR.

#!/usr/bin/env bash
0 голосов
/ 23 мая 2011

Чтобы узнать, где находится bash, введите команду:

type bash

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

#!bash

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...