~ / .profile, ~ / .bashrc и ~ / .bash_profile не запускаются при запуске нового терминала

Я пытаюсь создать постоянный псевдоним для своего терминала. Я помещаю псевдоним в свои файлы ~ / .profile, ~ / .bashrc и ~ / .bash_profile, которые ранее были пустыми. Когда я запускаю новый терминал, bash не распознает псевдоним, но если я использую какой-либо из них, он распознает. Почему они не запускаются, когда я открываю терминал? Я использую OSX.


person DazedAndConfused    schedule 29.07.2014    source источник
comment
какой терминал вы используете? iTerm?   -  person ptierno    schedule 30.07.2014
comment
Полезно понять, почему: Почему .bashrc не запускается автоматически? и В чем разница между .bash_profile и .bashrc?   -  person Ricardo    schedule 19.03.2021


Ответы (10)


При использовании iTerm, чтобы заставить работать точечные файлы, здесь должны произойти две вещи.

Сначала вы должны добавить следующее в свой .bash_profile

[[ -s ~/.bashrc ]] && source ~/.bashrc

Во-вторых, вам нужно убедиться, что в iTerm настройках ваш терминал настроен на запуск оболочки входа в систему.

Настройки iTerm

Надеюсь это поможет!

person ptierno    schedule 29.07.2014
comment
Ура! Это исправило! Спасибо за помощь! - person DazedAndConfused; 30.07.2014

Более новые версии MacOS используют zsh в качестве оболочки по умолчанию как для Терминала, так и для iTerm2. Запустите echo $SHELL, чтобы убедиться, что это ваш случай.

Zsh ищет .zshrc файл при запуске оболочки, поэтому, чтобы продолжать использовать zsh при поиске содержимого вашего профиля bash, вы можете запустить следующее:

echo "source ~/.bash_profile" >> ~/.zshrc

Откройте новое окно терминала, чтобы изменения вступили в силу.

person lchapo    schedule 20.07.2020
comment
Как мне отменить это? Это работает для меня, и теперь мой терминальный текст испорчен. - person thenomadicmann; 08.02.2021
comment
Это глубоко ошибочно. Вы никогда не должны использовать одну оболочку для загрузки файлов запуска другой. - person tripleee; 09.07.2021
comment
@thenomadicmann Вы должны отредактировать файл .zshrc и удалить оператор source, который вы добавили в самой последней строке. - person tripleee; 09.07.2021
comment
@tripleee, чтобы сделать ваш отзыв более конструктивным, я предлагаю выявить некоторые риски, связанные с этим подходом, и предложить альтернативу - person lchapo; 10.07.2021
comment
@lchapo Несколько ответов здесь определяют другие подходы. Я не думаю, что здесь действительно необходимо объяснять риски более подробно, и я повторяю то, что сказал здесь в других комментариях; но тривиально, использование синтаксиса только для Bash в этом файле нарушит его для любой оболочки, которая не поддерживает этот синтаксис. (Zsh можно настроить так, чтобы он понимал синтаксис Bash, но это заставляет вас требовать эту опцию конфигурации, что затем вызывает сомнения в обоснованности предпочтения Zsh над Bash.) - person tripleee; 10.07.2021

При использовании терминала Mac по умолчанию у меня сработало добавление команды для запуска при запуске, чтобы получить мой .bash_profile.

Настройки> Профиль> Запуск> Добавить команду 'source ~ / .bash_profile'

снимок экрана с настройками терминала Mac

Может показаться немного взломанным, но это помогает.

person Tony Ly    schedule 01.06.2016

Добавление source ~/.profile к моему .bash_profile сработало для меня.

person Cafebabe    schedule 18.01.2019

Что касается High Sierra, и Terminal, и iTerm сначала хотят загрузить ~ / .profile. Поэтому я предлагаю вам поместить одну строку в свой .profile, чтобы ваш Mac работал как другие Unix:

источник ~ / .bash_profile

Отредактировав один этот файл, вам не придется искать в меню нескольких приложений, чтобы преодолеть странное поведение Apple в каждом из них.

person Randy    schedule 21.03.2018
comment
Спасибо твоя идея помогла мне - person Cafebabe; 19.01.2019
comment
Это неверно, потому что это приведет к тому, что оболочки, отличные от Bash, попытаются получить файл, который зарезервирован для Bash и может содержать синтаксис, несовместимый с другими оболочками. (Выполнение обратного действия безвредно; измените .bash_profile на source ~/.profile, который предназначен для этого.) - person tripleee; 09.07.2021

Почему не загружаются файлы инициализации вашей оболочки?

Как и в большинстве случаев, It Depends ™

Недавно я испытал то же самое явление и проделал следующее упражнение, чтобы разрешить его:

Пользуюсь iTerm. iTerm по умолчанию запускает оболочку входа в систему. Проверьте настройки iTerm> Общие> Команда> (*) Оболочка входа. Поэтому я знаю, что всегда будет вызываться ~ / .bash_profile.

Зная это, я поместил в свой файл ~ / .bash_profile следующее:

for file in ~/.{bashrc,bash_exports,bash_aliases,bash_functions}; do
    [ -r "$file" ] && source "$file"
done
unset file

Обратите внимание, что я использую отдельные файлы для .bashrc, .bash_exports и т. Д. Это позволяет разделить вещи на отдельные и простые.

Также обратите внимание, что / etc / profile загружается первым, но, поскольку я никогда не использовал этот общесистемный файл инициализации, я знал, что это не моя проблема. Подробнее см. $ man bash

Итак, я начал с моего файла ~ / .bash_profile.

Я обнаружил, что когда я установил Canopy Express, установщик заменил содержимое моего файла ~ / .bash_profile со следующим содержанием:

# Added by Canopy installer on 2017-04-19
# VIRTUAL_ENV_DISABLE_PROMPT can be set to '' to make the bash prompt show that Canopy is active, otherwise 1
alias activate_canopy="source '/Users/lex/dev/python/User/bin/activate'"
# VIRTUAL_ENV_DISABLE_PROMPT=1 source '/Users/lex/dev/python/User/bin/activate'

p.s. Canopy - отличная бесплатная IDE для Python, которую я очень рекомендую.

К счастью, я сделал резервную копию моих файлов ~ / .bash *, поэтому восстановление было легким и быстро устранило мою проблему.

Я бы посоветовал понять порядок обращений к вашим файлам инициализации, начать с первого и работать с ними, пока не найдете проблему.

О, и вы можете проверить, какую оболочку вы используете (я использую bash):

~ $ echo $SHELL
/usr/local/bin/bash
person l3x    schedule 20.04.2017

Начиная с Catalina оболочкой по умолчанию теперь является zsh. Вы можете изменить его обратно на bash с помощью chsh -s /bin/bash, и это должно загрузить ваш .profile или .bash_profile

person braitsch    schedule 21.12.2019
comment
См. Этот пост для получения подробной информации о настройке nvm на zsh: stackoverflow.com/a/47017363/230119 - person Jeremy; 25.01.2020
comment
Сработало у меня! Спасибо - person Islam Attrash; 23.06.2021

Я предполагаю, что вы можете использовать другую оболочку, такую ​​как bash, tcsh, sh, zsh и т. Д.

Поместите source .bash_profile в соответствующий файл 'bashrc', и автоматическая загрузка восстановится, т.е.

.login для tcsh, .bash_profile для bash, .zshrc для zsh

person Cross    schedule 25.12.2018

Моя проблема была решена путем снятия флажка Настройки ›Общие› tmux ›

Используйте профиль tmux, а не профиль сеанса подключения

person lucasnomail    schedule 09.07.2021

Скорее всего, вам нужно создать файлы самостоятельно, поскольку по умолчанию они не существуют. Вы должны дать им разрешение на выполнение, чтобы они запустились.

~ % sudo chmod 700 ~/.bash_profile

Кроме того, вы должны проверить право собственности на файлы. Они должны принадлежать текущему пользователю, а не root. В противном случае вы получите permission denied ошибку.

~ % ls -a -l

~ % sudo chown <user_name> ~/.bash_profile

Наконец, обратите внимание, что bash ищет в вашем домашнем каталоге .bash_profile, .bash_login и .profile по порядку. Bash перестанет искать, если будет найден первый. Это означает, что если у вас есть файлы .bash_profile и .profile, файл .profile не запустится. Для получения дополнительной информации < / а>

Надеюсь, это поможет тебе.

person Ma Long    schedule 18.08.2020
comment
В этом нет необходимости, если вы изначально не использовали sudo неправильно для управления вашими личными файлами. Это обычная ошибка новичков как таковая, но все же не лучшее решение для других ситуаций. - person tripleee; 09.07.2021
comment
Опять же, единственная возможная ситуация, когда sudo будет необходимым и полезным, - это если вы раньше неправильно использовали sudo. Вы никогда не должны использовать sudo для управления своими собственными файлами, потому что это приведет к тому, что они будут принадлежать root, а не вам, что, по сути, является ошибкой целостности системы. - person tripleee; 10.07.2021