Как заставить 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.

Установка

  1. Установите zsh с помощью Homebrew: $ brew install zsh
  2. Установите Oh My Zsh: $ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  3. Перейти к .bash_profile установка .zshrc файл
  4. Чтобы применить внесенные вами изменения, вам нужно либо запустить новый экземпляр оболочки, либо запустить: 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.

Другие вопросы по тегам