Простой вопрос: я только что понял, что никогда не видел шебанга поверх .bashrc
скрипта, что наводит меня на мысль, что система использует оболочку по умолчанию для получения ее при входе в систему ( ${SHELL}
). Я размышляю над причинами, почему это так, то есть считается ли это плохой привычкой использовать что-то кроме оболочки по умолчанию для запуска сценария входа в систему.
22
Ответы:
.bashrc
и НЕ.bash_profile
являются сценариями. Это конфигурационный файл, каждый раз получаемый одним из двух способов:bash
Раздел INVOCATION на странице руководства bash - это то, что нужно.
Вы можете контролировать, когда они загружаются через ключи командной строки,
--norc
и--noprofile
. Вы также можете переопределить расположение, куда они загружаются с помощью--rcfile
коммутатора.Как уже упоминалось, вы можете имитировать, как эти файлы загружаются с помощью
source <file>
команды или. <file>
команды.Лучше думать об этой функциональности следующим образом:
Методы вызова
Эта тема, кажется, появляется время от времени, поэтому вот небольшая таблица различных способов вызова
bash
и их результатов. ПРИМЕЧАНИЕ. Чтобы помочь, я добавил сообщения «sourced $ HOME / .bashrc» и «sourced». $ HOME / .bash_profile "в соответствующие файлы.основные звонки
Баш-я
Баш-л
Баш-ил-или- Баш-ли
bash -c "..cmd .."
ПРИМЕЧАНИЕ. Обратите внимание, что
-c
ни один из этих файлов не был источником!отключение файлов конфигурации от чтения
Баш - Норк
bash --noprofile
Баш - Норк -i
Баш - Норк-л
bash --noprofile -i
bash --noprofile -l
bash --norc -i -или- bash --norc -l
Более эзотерические способы называть Баш
bash --rcfile $ HOME / .bashrc
bash --norc --rcfile $ HOME / .bashrc
Эти не удалось
bash -i -rcfile ~ / .bashrc
bash -i -rcfile .bashrc
Есть, вероятно, больше, но вы понимаете, надеюсь ...
Что-то еще?
И наконец, если вы настолько увлечены этой темой, что хотели бы прочитать / изучить ее подробнее, я настоятельно рекомендую взглянуть на Руководство по Bash для начинающих, в частности раздел 1.2. Преимущества Bourne Again Sheell . Различные подразделы этого раздела , «1.2.2.1. Вызов» через «1.2.2.3.3. Интерактивное поведение оболочки», объясняют различия на низком уровне между различными способами, которые вы можете вызывать
bash
.источник
.bash_profile
включает строку для источника.bashrc
. Но я считаю, что это очень типично для установок..bashrc
и.bash_profile
не являются скрипты . ИМХО, это скрипты специального назначения, которые неявно создаются во время инициализации bash или явно, когда вам нужно применить их модификации. Они не просто настраивают среду bash (переменные, функции, псевдонимы ...), как ожидается из файлов конфигурации. Они могут выполнять любые действия, как в обычных сценариях. Например, они могут запускать различные действия, такие как фоновые задачи, записывать записи в журнал, инициализировать некоторые программы и т. Д. В любом случае спасибо за подробное резюме!.bashrc
скрипты запускаются толькоbash
сами по себе. Они не являются автономными и не предназначены для использованияexec
системой. (На самом деле, они, как правило, не помечены как исполняемые, и, как вы говорите, у них нет строки Шебанга.)Такие сценарии предназначены для
source
d, так как они обычно делают такие вещи, как изменение переменных среды ($PATH
например), которые, как ожидается, сохранятся после завершения сценария. Поэтому было бы бессмысленно пытаться выполнить его в подоболочке.источник
В дополнение к другим ответам, обратите внимание, что если вы хотите, ничто не запрещает вам помещать шебанг в начале этих файлов конфигурации.
Это не повредит поиску оболочки, так как шебанг будет обрабатываться как обычный комментарий, то есть игнорироваться.
Это может помочь редакторам, которые используют подсветку синтаксиса, чтобы выяснить, какой язык программирования используется в файле.
Обратите внимание, что некоторые редакторы, как, например,
vim
предоставляют альтернативные способы, такие как модели для последнего. то есть вы всегда можете поместить строки режима в конец~/.bashrc
и~/.bash_profile
вот так:источник
.bash_profile
по рекомендации ShellCheck.Я читаю это где угодно, не знаю, где именно, но это правда
источник