Возникли проблемы с Ubuntu .profile и .bashrc - PullRequest
0 голосов
/ 13 октября 2018

Я новичок в Linux.В настоящее время я прохожу учебное пособие по настройке Kafka онлайн.В нем сказано добавить путь к моему каталогу bin kafka следующим образом в мой файл .profile, который я сделал следующим образом:

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi

# set PATH so it includes user's private bin directories
DOCKER="/usr/local/bin/docker-compose"
PATH="$HOME/bin:$HOME/.local/bin:$PATH:$DOCKER"
# Ubuntu make installation of Ubuntu Make binary symlink
PATH=/home/username/.local/share/umake/bin:$PATH
cat ~/.ssh/config.d/* > ~/.ssh/config
PATH="$PATH:/home/username/softwares/kafka/kafka_2.11-1.0.0/bin"

После этого я сделал эхо на $ PATH, я мог видеть путь kafkaдобавил в ПУТЬ.Пост, который я набрал kafka и затем вкладку, то я мог видеть дополнительные команды, связанные с kafka.

Затем в руководстве рассказывается, как редактировать файл .bashrc.Это было уже там.Это был довольно большой файл.В конце файла я добавил следующую строку (согласно учебнику):

. ~/.profile

После этого я открыл еще один терминал согласно учебнику, чтобы убедиться, что я все еще получаю все параметры, связанные с kafkaпосле кафки и таб.Я видел это на терминале, я не получал свое имя пользователя, и это было пустое окно терминала.Затем я отредактировал .bashrc, чтобы удалить добавленную строку, а затем попытался открыть новый терминал, и я смог увидеть свое имя пользователя на терминале.Затем я закрыл все терминалы.Открыл новый и набрал kafka и tab, и я не получил никаких опций, как раньше.Затем я открыл файл .profile и увидел, что путь kafka все еще добавлен.Затем я попытался отобразить $ PATH, и на этот раз пути Кафки там не было.

Я действительно смущен тем, что здесь происходит.Не могли бы вы объяснить немного и дать мне знать, как загружать .profile каждый раз, когда я открываю терминал, и именно поэтому я больше не вижу пути kafka, когда я выполняю эхо на PATH.

1 Ответ

0 голосов
/ 13 октября 2018

Что происходит :

Sourcing:

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

Некоторые файлы автоматически создаются при определенных условиях.

Типы оболочек:

Интерактивная оболочка: оболочка, предназначенная для ввода команд и получения вывода.В bash вы можете создать интерактивную оболочку следующими способами:

  1. Войти с помощью оболочки bash
  2. Запустить 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 за исправления в терминологии и Примечание о том, как конфигурации входа в системуработа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...