从键盘快捷键启动应用程序与从终端启动应用程序之间的区别?

Abe*_*Abe 5 bash emacs gnome-terminal appmenu environment-variables

我观察到的:

当我输入emacsgnome-terminal 时,它会在相同的环境中启动,变量设置在.bashrc. 如果我使用命令的键盘快捷键emacs,它会在没有这些变量的环境中打开。

问题:

  1. 这种行为有原因吗?
  2. 如何让 emacs 在设置为的环境中打开.bashrc
  3. 如果我有 root 访问权限,我可以在“系统范围内”设置这些变量吗?

附加背景:我需要能够从 R 中访问变量,如相关的 SO 问题中所述(How to access a bash environment variable from inside R in emacs),我还需要我的 texlive 分发的路径奥特克斯。目前的问题是不同的,我更普遍地推出的emacs之间从应用程序菜单终端并启动emacs的内感兴趣的差异,侏儒做,或键盘快捷方式,无论是通话emacs还是/usr/bin/emacs23 %F

Sam*_*mik 9

~/.bashrc通常在您登录后读取辅助交互式 shell。如果您想在登录时初始化您的参数,请~/.profile改为使用。要在系统范围内应用您的参数/etc/profile. 这是 bash 读取的第一个文件。

为了让事情更清楚,我想我会多解释一点。

  • 当您登录时,您的登录外壳首先读取 global /etc/profile,然后~/.profile初始化那里提到的参数/变量。但是,您不会将此 shell 视为终端,因为 X-window 系统 GUI 正在运行。
  • 登录后,当您打开辅助终端/终端仿真器时,例如gnome-terminal ~/.bashrc被读取并且其中声明的参数/变量仅对辅助终端可用。请注意,此辅助终端是您的登录 shell 的子进程。
  • 当您从菜单启动应用程序时,它会作为登录 shell 的子进程执行,并从其祖先进程继承参数。但.bashrc不适用于主登录 shell;所以它也不适用于应用程序。因此,.bashrc如果从菜单运行,这些应用程序中的任何内容都将不可用。但是,当您打开 agnome-terminal并从那里执行命令时,应用程序将作为其子项启动gnome-terminal.bashrc从中继承的参数。