Как заставить OS X читать.bash_profile, а не.profile файл
Я прочитал очень много советов о том, чтобы не помещать ваши команды настройки в файл ".profile". Скорее создайте.bash_profile для себя и добавьте свой псевдоним и т. Д.
Но когда я открываю новый терминал, если есть только.bash_profile, OS X не экспортирует / не использует команды, упомянутые в нем. Я должен вручную.bash_profile.
Если я создаю файл.profile, при открытии нового терминала все мои команды в.profile выполняются и будут легко доступны.
Не могли бы вы помочь мне понять, как это работает? Кроме того, когда использовать файлы.bashrc/.profile/.bash_profile.
Спасибо!
8 ответов
According to the manual page that ships with OS X:
... it looks for
~/.bash_profile
,~/.bash_login
, а также~/.profile
в этом порядке, и читает и выполняет команды из первой, которая существует и доступна для чтения.--noprofile
option may be used when the shell is started to inhibit this behavior.
It should only read ~/.profile
as a last resort if neither ~/.bash_profile
ни ~/.bash_login
are readable.
On all of my OS X systems, I have my ~/.bash_profile
установлен в:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
It is highly recommended that you do this on OS X in order to get bash to read your ~/.bashrc
file like you would expect.
Согласно Apple,
zsh (оболочка Z) - это оболочка по умолчанию для всех вновь созданных учетных записей пользователей, начиная с macOS Catalina.
Поэтому вам следует проверить оболочку по умолчанию с помощью команды:
$ echo $SHELL
Если результатом является /bin/bash, ваша оболочка по умолчанию - BASH, а если результат - /bin/zsh, по умолчанию - ZSH.
Иди домой с $ cd ~/
и создайте профиль (если он не существует) и отредактируйте его с помощью команд:
Для bash:
$ touch .bash_profile
$ open .bash_profile
Для ZSH:
$ touch .zprofile
$ open .zprofile
Также возможно, что ваша оболочка терминала по умолчанию использует sh вместо bash. Вы можете проверить это сначала:
$ echo $SHELL
/bin/tcsh
Чтобы изменить это на bash, вы можете перейти на вкладку "Терминал" -> "Настройки" -> "Автозагрузка" и изменить "Shell Opens With:" с "Оболочка входа по умолчанию" на Command и значение "/bin/bash".
Кроме того, вы можете изменить оболочку по умолчанию, выполнив в командной строке следующую команду:
chsh -s bin/bash
После того как вы сделаете одно из них, откройте новое окно оболочки, и ваш.bash_profile должен быть получен.
Для всех, кто найдет это, вместо bash_profile для новых версий Mac вы можете использовать
.zshrc
. ИИ, делай
open .zshrc
и добавляйте туда то, что вам нужно.
Вы можете использовать zsh
решить проблему.
Оболочка Z (также известная как
zsh
) - это оболочка Unix, построенная на основеbash
(оболочка по умолчанию для macOS) с дополнительными функциями. Рекомендуется использоватьzsh
надbash.
Установка
- Установите zsh с помощью Homebrew:
$ brew install zsh
- Установите Oh My Zsh:
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
- Перейти к
.bash_profile
установка.zshrc
файл - Чтобы применить внесенные вами изменения, вам нужно либо запустить новый экземпляр оболочки, либо запустить:
source ~/.zshrc
Если вы используете zsh, вы можете получить исходный файл .bash_profile, добавив следующую строку в .zprofile.
if [ -f ~/.bash_profile ]; then
source ~/.bash_profile
fi
Следует отметить, что Bash сначала будет искать /etc/profile
файл, как указано в справочных страницах Bash.
Когда bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла /etc/profile, если этот файл существует. После прочтения этого файла он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения. Опция --noprofile может использоваться, когда оболочка запущена, чтобы запретить это поведение.
Я решил, просто добавив bash
(в новой строке) в файл ~/.bash_profile.