Я понимаю о разнице между Интерактивным входом и Интерактивным входом без входа
Согласно этому отличному сообщению: Порядок загрузки файлов запуска Zsh / Bash (.bashrc, .zshrc и т. д.) у нас есть следующая таблица
+----------------+-----------+-----------+------+
| |Interactive|Interactive|Script|
| |login |non-login | |
+----------------+-----------+-----------+------+
|/etc/profile | A | | |
+----------------+-----------+-----------+------+
|/etc/bash.bashrc| | A | |
+----------------+-----------+-----------+------+
|~/.bashrc | | B | |
+----------------+-----------+-----------+------+
|~/.bash_profile | B1 | | |
+----------------+-----------+-----------+------+
|~/.bash_login | B2 | | |
+----------------+-----------+-----------+------+
|~/.profile | B3 | | |
+----------------+-----------+-----------+------+
|BASH_ENV | | | A |
+----------------+-----------+-----------+------+
| | | | |
+----------------+-----------+-----------+------+
| | | | |
+----------------+-----------+-----------+------+
|~/.bash_logout | C | | |
+----------------+-----------+-----------+------+
Первая ссылка относится к этому другому отличному сообщению: Очистка настроек bash , где доступно отличное объяснение Интерактивного входа в систему и Интерактивного не -login следующим образом:
Оболочка интерактивного входа в систему - это оболочка, в которую вы вводите текст, то есть первая такая оболочка, которую вы запускаете на машине. Обычно вам нужно будет войти в систему непосредственно перед запуском оболочки. Например, когда вы подключаетесь по SSH к удаленной системе и вводите команды для этой системы, вы вводите текст в интерактивной оболочке входа в систему.
Интерактивная оболочка без входа в систему - это новая оболочка, запускаемая после того, как вы уже вошли в систему; тот, который не требует повторного входа в систему. Например, , если вы открываете новое окно терминала в графическом пользовательском интерфейсе и получаете приглашение оболочки , это интерактивная оболочка без входа в систему.Другой пример интерактивной оболочки без входа в систему - это вспомогательная оболочка, запускаемая из текстового редактора; например, набрав: sh в vi.
Что касается первого, то он практически обязательно применяется в среде Ubuntu Server - где для работы с каждым tty
требуется вход в систему, поэтому в соответствии с таблицей ~ Используется /.profile
(я подтвердил, что не существует ни файлов ~ / .bash_profile
, ни ~ / .bash_login
). Он применяется к su - otheruser
(запрашивает его / ее пароль), и поэтому также выполняется его / ее собственный файл ~ / .profile
. Пока здесь я в порядке.
О последнем - причина этого сообщения - окружение Ubuntu Desktop , оно применяется, когда новое окно / терминал открывается только с одной вкладкой по умолчанию, поэтому в соответствии с таблицей должно выполняться /etc/bash.bashrc
и ~ / .bashrc
файлы и не файл .profile
Но почему, если выполняется в , что терминал:
echo $ JAVA_HOME
(определено в .profile
) echo $ M2_HOME
(определено в .profile
) echo $ GRADLE_HOME
(определено на .profile
) which java
which mvn
which gradle
все команды работают нормально?
Такое же поведение для любой новой вкладки ( Ctrl + Shift + T
) в том же окне и даже для нового окна терминала с его уникальной вкладкой по умолчанию
, я прочитал следующее сообщение:
И у меня нет упомянутых настроек (второй адаптирован для рабочего стола Ubuntu 18:04):
.bashrc
не ссылаются на .profile и не используют его в качестве источника.
файл Правка
-> Настройки
-> Без имени
-> Вкладка команд
-> Запустить команду как оболочка входа в систему
(не отмечена)