У меня есть псевдоним, который я добавил в .bashrc, и он активируется в терминале только после того, как я запускаю команду bash. Я чувствую, что должен знать, что здесь происходит, но я не знаю. :)
3 ответа
От man bash
:
Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему , bash читает и выполняет команды из
~/.bashrc
, если этот файл существует.
Акцент мой
В OS X все окна и вкладки терминала запускают оболочки входа в систему, что эквивалентно тому, что вы используете bash --login
вместо bash
. Поэтому ~/.bashrc
игнорируется, если явно не указан source
d, например, ~/.bash_profile
:
Когда bash вызывается как интерактивная оболочка входа в систему, [...] он сначала читает и выполняет команды из файла
/etc/profile
, если этот файл существует. После прочтения этого файла он ищет~/.bash_profile
,~/.bash_login
и~/.profile
в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.
Просто создайте ~/.bash_profile
если он не существует, и добавьте следующую строку:
. .bashrc
Затем .bashrc
будет загружен даже для сеансов входа в систему.
В зависимости от версии OS X используемая оболочка по умолчанию может не быть bash. Вы можете проверить это, набрав (перед запуском 'bash'):
$ echo $SHELL
/bin/zsh
Вы можете изменить оболочку по умолчанию на bash, чтобы вам не приходилось продолжать выполнение команды, следуя приведенным здесь инструкциям:
https://serverfault.com/questions/21044/how-do-i-change-a-users-default-shell-in-osx
От @ chopper3
для <= 10,4 - менеджер netinfo, /users /whoever /shell
для 10.5 => - SysPrefs, учетные записи, удерживая нажатой клавишу «Control», выберите дополнительные параметры, отредактируйте поле оболочки входа.
Чтобы далее ответить на ваш вопрос, .bashrc используется только оболочкой bash. Если вы хотите, вы можете выяснить, какую оболочку вы используете, и добавить псевдоним в .tcshrc или .zshrc вместо того, чтобы менять все, чтобы использовать bash.
Больше информации о том, что такое оболочка:
http://en.wikipedia.org/wiki/Shell_(computing)
и bash конкретно:
Псевдоним не работает после запуска bash
- он работает, когда вы запускаете bash
.
По сути, ~/.bashrc
- это файл, который содержит директивы, запускаемые bash
каждом запуске. Оболочкой по умолчанию для всех последних версий Mac OS X является bash
, поэтому она запускается каждый раз, когда вы открываете терминал. bash
не знает, как перечитать свои файлы конфигурации при их редактировании, поэтому псевдоним не работает сразу, когда вы добавляете его в ~/.bashrc
. Когда вы запускаете bash
в своей существующей оболочке, вы создаете еще один экземпляр bash
(который будет читать измененный файл конфигурации, потому что он запускается). Обратите внимание, что ваш первоначальный экземпляр bash
все еще там, и работает за bash
вы запускали вручную. Если вы закроете оболочку (с помощью команды exit
), вы вернетесь к своей исходной оболочке (если закроете ее, вы получите сообщение "процесс завершен" из терминала).
Итак, вернемся к вашей проблеме: ваш псевдоним не будет работать, пока bash
перечитает свою конфигурацию. Вы можете сделать это, запустив bash
снова (либо создав другую оболочку внутри существующей оболочки, запустив bash
, либо закрыв и открыв свой терминал), либо вы можете использовать команду source
чтобы получить bash
для перечитывания файла. Итак, после того, как вы отредактировали ~/.bashrc
, сделайте source ~/.bashrc
- псевдоним работает, больше не запуская bash
.