Подтвердить что ты не робот

Как заставить OS X читать файл .bash_profile не .profile

Я читал так много предложений, не добавляя ваши настройки aka команд в файл .profile. Скорее создайте .bash_profile для себя и добавьте свой псевдоним и т.д.

Но, когда я открываю новый терминал, если есть только .bash_profile, OS X не экспортирует/не находит команды, упомянутые в нем. Мне нужно вручную указать файл .bash_profile.

Если я создаю файл .profile, при открытии нового терминала все мои команды в .profile выполняются и будут доступны с готовностью.

Не могли бы вы помочь мне в понимании, как это работает? Также, когда использовать файлы .bashrc/.profile/.bash_profile.

Спасибо!

4b9b3361

Ответ 1

Согласно странице руководства, поставляемой с OS X:

... он ищет ~/.bash_profile, ~/.bash_login и ~/.profile, в этом порядке и читает и выполняет команды из первого, который существует и доступен для чтения. Опция --noprofile может использоваться, когда оболочка начинает блокировать это поведение.

Он должен читать только ~/.profile в качестве крайней меры, если ни ~/.bash_profile, ни ~/.bash_login не читаются.

Во всех моих системах OS X у меня установлен ~/.bash_profile:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

Настоятельно рекомендуется сделать это на OS X, чтобы получить bash для чтения вашего файла ~/.bashrc, как вы ожидали.

Ответ 2

Также возможно, что ваша терминальная оболочка по умолчанию использует sh вместо bash. Вы можете проверить это первым:

$ echo $SHELL
/bin/tcsh

Чтобы изменить это на bash, вы можете зайти на вкладку "Терминал" - "Настройки" → "Запуск" и изменить "Оболочка открывается с:" с "Обозначения по умолчанию" в "Команда и значение" /bin/ bash ".

В качестве альтернативы вы можете изменить оболочку по умолчанию, выполнив следующую команду в командной строке:

chsh -s bin/bash

После того, как вы сделаете одно из них, откройте новое окно оболочки, и ваш .bash_profile должен быть найден.

Ответ 3

Следует отметить, что bash сначала ищет файл /etc/profile, как указано в man-страницах bash.

Когда bash вызывается как интерактивная оболочка входа или как неинтерфейс, активная оболочка с опцией --login, , она сначала считывает и выполняет com- mands из файла /etc/profile, если этот файл существует. После прочтения этот файл ищет ~/.bash_profile, ~/.bash_login и ~/.profile, в этом порядке, и считывает и выполняет команды из первого, который существует и читается. Опция -noprofile может использоваться, когда оболочка начинает тормозить это поведение.

Ответ 4

Я решил, просто добавив bash (в новой строке) в файл ~/.bash_profile.