从键盘快捷方式启动应用程序与终端之间的区别?
我所观察到的:
当我在gnome-terminal中键入emacs
时,它会在相同的环境中启动,变量设置在.bashrc
。 如果我使用命令emacs
的键盘快捷键,它将在没有这些变量的环境中打开。
问题:
- 这种行为有原因吗?
- 如何在具有
.bashrc
设置的环境中打开emacs? - 如果我有root访问权限,我可以在系统范围内设置这些变量吗?
附加背景:我需要的是能够从R中访问变量,如相关的SO问题( 如何在emacs中从R中访问bash环境变量 )中所述,我还需要通过我的texlive分发的路径Auctex。 目前的问题不同之处在于我更感兴趣的是从终端内启动emacs和从应用程序菜单,Gnome-do或调用emacs
或/usr/bin/emacs23 %F
键盘快捷键启动emacs之间的区别。 。
登录后,通常会为辅助交互式shell读取~/.bashrc
。如果要在登录时初始化参数,请改用~/.profile
。 要在系统范围内使用参数,请使用/etc/profile
。 这是bash读取的第一个文件。
为了让事情更清楚,我想我会解释一下。
- 当您登录时,您的登录shell首先读取全局
/etc/profile
,然后提到~/.profile
和参数/变量。 但是,由于X-window系统GUI正在运行,因此您不会将此shell视为终端。 - 登录后打开辅助终端/终端仿真器时,例如
gnome-terminal
~/.bashrc
被读取,并且其中声明的参数/变量仅可用于辅助终端。 请注意,此辅助终端是登录shell的子进程。 - 当您从菜单启动应用程序时,它将作为登录shell的子进程执行,并从其祖先进程inheritance参数。 但
.bashrc
不适用于主登录shell; 所以它也不适用于应用程序。 因此,如果从菜单运行,.bashrc
任何内容都将无法用于这些应用程序。 但是当你打开一个gnome-terminal
并从那里执行命令时,应用程序将作为gnome-terminal
子gnome-terminal
启动,并从中inheritance.bashrc
的参数。