Чтобы создать псевдоним для терминала в OS X, вы можете поместить псевдонимы в .bash_profile
или .bashrc
. В чем разница между этими двумя понятиями и почему я выберу псевдонимы для одного, а не для другого?
terminal
command-line
bash
daviesgeek
источник
источник
brew install bash
и использовать iTerm2, вы можете установитьprofile -> command
на/usr/local/bin/bash
который будет загружаться.bashrc
по умолчанию после.bash_profile
. Это также дает Bash 4 вкусности ...Ответы:
.bash_profile
выполняется для оболочек входа в систему, а.bashrc
для интерактивных оболочек без входа в систему.Когда вы входите в систему (вводите имя пользователя и пароль) через консоль, либо сидя за компьютером, либо удаленно через ssh:
.bash_profile
выполняется для настройки вашей оболочки до начальной командной строки.Но, если вы уже вошли в свою машину и открыли новое окно терминала (xterm), то
.bashrc
выполняется перед командной строкой окна..bashrc
также запускается, когда вы запускаете новый экземпляр bash, набирая/bin/bash
в терминале.В OS X Terminal по умолчанию запускает оболочку входа в систему каждый раз, так что это немного отличается от большинства других систем, но вы можете настроить это в настройках.
источник
On OS X, Terminal by default runs a login shell every time
- Я всегда был так смущен, не осознавая этого. Отличная информация!.zprofile
запускается каждый раз.X11 будет смотреть на вас, в
.bashrc
то время как «обычный» терминал будет смотреть на.bash_profile
Однако, если вы добавите
.bash_profile
в свой.bashrc
файл следующее , вы можете переместить все в свой файл, чтобы объединить все в одном месте вместо двух:источник
cd ~ ; ln -s .bashrc .bash_profile
.~/.bash_profile
). Также часто необходимо, чтобы вещи определялись постепенно на каждом уровне оболочки (~/.bashrc
). Это не лучшая идея предложить подавить эту свободу.~/.bash_profile
для каждого нового окна / вкладки, так что на самом деле нет способа разделить их в терминале..bash_profile
никогда не может быть получен снова в дочернем процессе. Каждый уровень вложенности источников Bash.bashrc
, так что если вы положили что - то подобноеexport A=a:$A
в.bashrc
, ваш$A
получит больше в гнездовом Bash. Я обычно оставляю переменную окружения в профиле и псевдонимы в RC.Для macOS код, в который
.bash_profile
нужно объединить все,.bashrc
выглядит следующим образом:Это более конкретно для пользователя терминала Mac.
источник
TLDR; используйте
.bash_profile
для своих псевдонимов.Способ совместной работы различных файлов инициализации немного сложнее, и в OSX есть несколько важных особых случаев. Вот основные моменты:
.bash_profile
вызывается. Таким образом, совет TLDR выше..bashrc
также является опцией, но она будет вызываться каждый раз, когда вы создаете подоболочку (т.е. вызываетеbash
), что может создать неэффективность, если вы обновите переменную внутри нее (например,PATH=/bin/foo:$PATH
).bashrc
от.bash_profile
являются довольно распространенным явлением. Я не рекомендую это, но это предпочтение.источник
.bash_profile
псевдонимов сложно? Элементы, которые вы перечисляете только частично, вообще относятся к псевдонимам, поэтому вместо того, чтобы просто перечислить некоторые маркеры, которые могут объяснить, почему это кажется сложным, можете ли вы предложить способ сделать это проще в рамках этих ограничений?