Почему я должен продолжать использовать `source ~/.profile` для получения настроек?
У меня есть несколько сценариев bash, которые я хочу убедиться, что они выполняются по умолчанию, и я в настоящее время храню их в ~/.profile
на моем mac. Неправильное место для их хранения? Я слышал о других и пробовал их (например, ~/.bashrc
, ~/.bash_profile
и т.д.), Но они, похоже, не работают.
В чем разница между всеми из них и какой из них я помещаю в сценарии, чтобы он настраивался во время выполнения, и мне не нужно вызывать $ source ~/.profile
каждый раз, когда я открываю терминал?
Ответы
Ответ 1
+-----------------+
| |
interactive shell -->| ~/.bashrc |
| |
+-----------------+
interactive shell
будет автоматически ~/.bashrc
.
Посмотрите Если загружается .bashrc в домашнем каталоге?
Ответ 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
, или он будет циклически навсегда, и вы будете никогда не получите приглашение.