Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: ~/.bashrc and ~/.profile  (Прочитано 1190 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3037
    • Просмотр профиля
~/.bashrc and ~/.profile
« : 17 Июля 2019, 21:52:34 »
В .profile и в .bashrc можно выполнять команды bash и внешние, а в чём разница при выполнении этих файлов?
Именно, если я вставляю в .profile вызов
/usr/bin/xkbcomp $HOME/archive my_ru.xkb $DISPLAYто она исполняется, я вижу вывод от xkbcomp, но раскладка не изменяется, а если эта командя вызывается из .bashrc,
то раскладка загружается. Хотя в обоих случаях на момент вызова $DISPLAY уже существует.
А почему это так работает, после .profile что, X-сервер перезагружается?
Пётр.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: ~/.bashrc and ~/.profile
« Ответ #1 : 17 Июля 2019, 23:47:48 »
.profile читается один раз во время консольного входа.
.bashrc читается при каждом запуске bash в интерактивном режиме.

Пользователь добавил сообщение 17 Июля 2019, 23:48:16:
(Расшифровка - скорее всего, это не то, что вам нужно.)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3037
    • Просмотр профиля
Re: ~/.bashrc and ~/.profile
« Ответ #2 : 18 Июля 2019, 00:05:25 »
AnrDaemon, тогда почему во время консольного входа существует $DISPLAY и равна :0?
Пётр.

Оффлайн The Green Side

  • Старожил
  • *
  • Сообщений: 1178
    • Просмотр профиля
Re: ~/.bashrc and ~/.profile
« Ответ #3 : 18 Июля 2019, 06:55:41 »
Выдержка из этого ответа

Цитировать
~/.profile - место для назначения того, что должно действовать для всей сессии, например софт, который должен стартовать при логине (но без GUI, они прописываются с другом месте), и определения переменных окружения.

~/.bashrc - место для назначения того, что действует только в bash, например алиасы и функции, опции оболочки, настройки строки приглашения. (Также вы можете здесь назначить значения клавиш, но в случае с баш они, как правило, идут в ~/.inputrc.)

~/.bash_profile может быть использован вместо ~/.profile, но он читается только bash, никакой другой оболочкой. (Это может быть важно если вы хотите, чтобы ваши файлы инициализации работали на нескольких машинах и не на всех оболочка bash) В это место логично включить ~/.bashrc если оболочка интерактивная. Я рекомендую следующее в ~/.bash_profile:

if [ -r ~/.profile ]; then . ~/.profile; fi
case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac

От себя могу добавить, что если в .bashrc вызвать echo или printf для отображения информации о системе, перестанут правильно работать не интерактивные подключения по ssh к данной машине, например rsync, т.к. они ожидают корректные ответы, а получают ваш вывод echo \ printf
Такие выводы должны быть в .profile или .bash_profile
« Последнее редактирование: 18 Июля 2019, 06:57:16 от m-svo »
Debian 11, Debian 11 Server

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3037
    • Просмотр профиля
Re: ~/.bashrc and ~/.profile
« Ответ #4 : 18 Июля 2019, 08:52:16 »
Так я и сам понимаю, что некоторые файлы этого рода выполняются и без GUI, я впервые установил Linux в 1996г.
и долгое время входил именно в текстовом режиме, а X-ы запускал по startx.
Но сейчас ведь X-ы уже запущены, $DISPLAY есть и xkbcomp срабатывает как обычно. Почему же не сохраняется
результат её работы?
Пётр.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: ~/.bashrc and ~/.profile
« Ответ #5 : 18 Июля 2019, 17:23:24 »
о
Ещё раз, медленно - файлы не выполняются сами по себе, их читает-выполняет ЧТО-ТО!
В случае консольного логина это /bin/bash, который читает ~/.profile и ~/.bashrc (в этом порядке).
В случае графического логина, /bin/bash НЕ ЗАПУСКАЕТСЯ ВООБЩЕ и файлы НЕ ЧИТАЮТСЯ. Да, вообще.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3037
    • Просмотр профиля
Re: ~/.bashrc and ~/.profile
« Ответ #6 : 18 Июля 2019, 21:31:36 »
AnrDaemon, а кто же тогда выполняет команды из .profile и из .bashrc, в т.ч. xkbcomp, когда я вхожу при запущенных X-ах?
Или мои команды установки переменных окружения? xkbcomp ведь не выполнится без X-ов, без $DISPLAY, а и то и другое есть и она
выполняется из обоих этих файлов, но результат сохраняется только при вызове из .bashrc. Или из .tcshrc при tcsh.
Пётр.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: ~/.bashrc and ~/.profile
« Ответ #7 : 18 Июля 2019, 21:51:26 »
.bashrc читается при каждом запуске bash в интерактивном режиме.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.029 секунд. Запросов: 25.