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

我所观察到的:

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

问题:

  1. 这种行为有原因吗?
  2. 如何在具有.bashrc设置的环境中打开emacs?
  3. 如果我有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-terminalgnome-terminal启动,并从中inheritance.bashrc的参数。