На этот вопрос уже есть ответ здесь:
- Почему .bashrc не запускается автоматически? 13 ответов
Я нашел много людей, выясняющих, почему инструкция похожа на это:
Put X to your ~/.bashrc and you can do Y
не работает
Всегда получается, что загрузочные файлы bash в Mac OS X (или сам Bash в Mac) не содержат файл ~ / .bashrc, либо в оболочке входа в систему, либо в оболочке, порожденной из оконной системы - как приложение Terminal в Mac OS X)
Почему, когда все другие Unix-подобные системы с Bash, с которыми я работал раньше, сделали это?
PS:
Я обнаружил, что Bash говорит о файлах запуска (что может быть полезно):
Когда Bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения. Опция --noprofile может использоваться, когда оболочка запущена, чтобы запретить это поведение.
Источник: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files
источник
~/.bash_profile
выполняется, но нет~/.bashrc
. Wierd.Ответы:
В OSX терминал по умолчанию запускает сеанс входа в систему, поэтому читает .bash_profile и т. Д. (Процесс входа в GUI, запрашивающий ваше имя и пароль, не использует сценарии оболочки и не запускает оболочку, все это выполняется из launchd и рабочей области)
В других Unix xterm по умолчанию запускает оболочку, не входящую в систему, поэтому они читают .bashrc, поскольку сценарии, которые предоставляют вам ваш пароль и т. Д. При входе в систему, вызывают сеанс входа в систему, и все терминалы являются подпроцессом этого процесса и наследуют среду оболочки.
Из документа GNU, на который вы ссылались
источник
bash
читает только.bashrc
для не-логинов :Поскольку Терминал запускается
bash
как оболочка входа в систему (запускается,w
чтобы увидеть, чтоbash
экземпляры выполняются как-bash
),.bashrc
никогда не читается автоматически.источник