Почему я должен продолжать использовать `source ~/.profile` для получения настроек?

У меня есть несколько сценариев bash, которые я хочу убедиться, что они выполняются по умолчанию, и я в настоящее время храню их в ~/.profile на моем mac. Неправильное место для их хранения? Я слышал о других и пробовал их (например, ~/.bashrc, ~/.bash_profile и т.д.), Но они, похоже, не работают.

В чем разница между всеми из них и какой из них я помещаю в сценарии, чтобы он настраивался во время выполнения, и мне не нужно вызывать $ source ~/.profile каждый раз, когда я открываю терминал?

Ответы

Ответ 2

Если существуют как ~/.bash_profile, так и ~/.profile, bash только читает ~/.bash_profile, когда он вызывается как интерактивная оболочка входа.

https://www.gnu.org/s/bash/manual/html_node/Bash-Startup-Files.html:

Вызывается как интерактивная оболочка входа или с -login

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

[...]

Вызывается как интерактивная оболочка без входа

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

~/.profile также используется другими оболочками.

Терминал и iTerm открывают новые оболочки как оболочки для входа по умолчанию (выполняя что-то вроде login -pf $USER), но многие терминальные приложения GNU/Linux открывают новые оболочки как оболочки без входа. Пользователи OS X часто используют ~/.bash_profile вместо ~/.bashrc.

Ответ 3

Я сделал это, чтобы исправить проблему:

cat .bash_profile >> .profile
rm .bash_profile

альтернативой является:

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

Ответ 4

Различные настройки bash будут автоматически создавать разные файлы в зависимости от их конфигурации. Почти универсальный файл, который всегда используется, ~/.bashrc - это основная вещь bash, которая будет загружать этот файл. В этом файле вы должны добавить свою строку в source ~/.profile, и вам будет хорошо идти!

-Edit -

Из моего Linux и моего коллеги Mac:

$ echo "echo hello" >> ~/.profile
$ echo "source ~/.profile" >> ~/.bashrc
$ bash
Hello
$ 

Ответ 5

Убедитесь, что вы source ~/.profile в .bashrc, в котором вы комментируете или удаляете любые команды (в .profile) для вызова или источника .bashrc в вашем .profile, или он будет циклически навсегда, и вы будете никогда не получите приглашение.