Что происходит :
Sourcing:
Когда вы запускаете команду . somefile
, вы используете этот файл в своей текущей оболочкеэто в основном означает, что она запускает каждую команду, находящуюся в somefile
в вашей текущей оболочке.
Некоторые файлы автоматически создаются при определенных условиях.
Типы оболочек:
Интерактивная оболочка: оболочка, предназначенная для ввода команд и получения вывода.В bash вы можете создать интерактивную оболочку следующими способами:
- Войти с помощью оболочки bash
- Запустить bash из терминала
Оболочка входа:оболочка, которая создается при первом входе в систему.то есть.Оболочка, которую вы получаете при первом входе в систему по ssh на сервер или при входе в систему на компьютере без графического интерфейса.
Интерактивная оболочка без входа в систему: оболочка, которая не является оболочкой входа, но является интерактивной.то есть.Оболочка, которая создается при открытии настольного терминала или оболочки, которую вы получаете, когда вы запускаете bash
после входа в систему через ssh
~ / .profile и ~ / .bash_profile, а ~ / .bash_login можетбыть автоматически получены из оболочек входа в систему Итак, возможно, вы получаете этот путь при первом входе в систему или при ручном вводе (.) .profile
Обратите внимание, что если .bash_profile существует и доступен для чтения, то Bash не будетчитать .bash_login или .profile.https://askubuntu.com/questions/98433/run-a-script-on-login-using-bash-login
Оболочка входа ищет ... "~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, читает и выполняет команды из первой существующей идоступно для чтения "man bash
(credit: cdarke)
Возможно, после этого вы пытаетесь открыть bash внутри терминала рабочего стола или вторичной оболочки bash, и вы не получаете новый путь, потому что только ~ / .bashrc -not ~ / .profile поставляется в Интерактивных оболочках без регистрации, и у вас нет этой директивы PATH в вашем ~ / .bashrc
Решение:
Add PATH="$PATH:/home/username/softwares/kafka/kafka_2.11-1.0.0/bin"
на ~/.bashrc
вместо ~/.profile
Ссылка:
https://serverfault.com/questions/261802/what-are-the-functional-differences-between-profile-bash-profile-and-bashrc
Примечание:
Не беспокойтесь о том, что он не отображается в оболочках входа в систему, потому что, как вы видите .profile вызывает .bashrc
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Спасибо cdarke за исправления в терминологии и Примечание о том, как конфигурации входа в системуработа