Различие между запуском приложения от сочетания клавиш по сравнению с терминалом?

Что я наблюдал:

Когда я ввожу emacs в терминале гнома это запускается в той же среде, с переменными начинаются .bashrc. Если я использую сочетание клавиш для команды emacs, это открывается в среде, которая не имеет этих переменных.

Вопросы:

  1. Существует ли причина этого поведения?
  2. Как я могу заставить emacs открываться в среде настройками от .bashrc?
  3. Если у меня есть корневой доступ, я могу установить эти переменные 'в масштабе всей системы'?

Дополнительный фон: Мне нужно, должен смочь получить доступ к переменным из R, как описано в связанном ТАК вопрос (Как получить доступ к переменной среды удара из R в emacs), и мне также нужен путь к моему texlive распределению для Auctex. Существующий вопрос отличается в этом, я в более общем плане интересуюсь различием между запуском emacs из терминала и запуском emacs из меню Applications, Gnome - делают, или сочетание клавиш тот вызов также emacs или /usr/bin/emacs23 %F.

5
задан 23 May 2017 в 15:39

1 ответ

~/.bashrc обычно читается для вторичных интерактивных оболочек после входа в систему. Если вы хотите инициализировать свои параметры при входе в систему, используйте вместо этого ~/.profile. Для применения ваших параметров в масштабе всей системы используйте /etc/profile. Это первый файл, прочитанный bash.

Чтобы прояснить ситуацию, думаю, я объясню немного подробнее.

  • Когда вы входите в систему, ваша оболочка входа в систему сначала читает глобальный /etc/profile, затем ~/.profile и упомянутые там параметры / переменные инициализируются. Однако вы не видите эту оболочку в качестве терминала, потому что работает графический интерфейс системы X-Window.
  • После входа в систему, когда вы открываете вторичный терминал / эмулятор терминала, например. gnome-terminal ~/.bashrc считывается, и объявленные в нем параметры / переменные доступны только для вторичного терминала. Обратите внимание, что этот вторичный терминал является дочерним процессом вашей оболочки входа в систему.
  • Когда вы запускаете приложение из меню, оно выполняется как дочерний процесс вашей оболочки входа в систему и наследует параметры от процесса своего предка. Но .bashrc не было доступно для основной оболочки входа в систему; поэтому он также недоступен для приложений. Поэтому что-либо в .bashrc не будет доступно для этих приложений, если оно запускается из меню. Но когда вы открываете gnome-terminal и выполняете команду оттуда, приложения запускаются как дочерние элементы gnome-terminal и наследуют параметры .bashrc от него.
0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: