根据Ask Ubuntu对什么是登录和非登录壳?的回答,GNOME终端是一种非登录外壳。正如优秀的书“Fedora和Red Linux实用指南”第6版所指出的:
交互式的非登录shell在~/..bashrc文件中执行命令。默认的~/.bashrc文件调用/etc/bashrc。
因此,/etc/profile将不会在非登录shell中处理。但是,我发现我在PATH变量中附加了java主路径,当我使用GNOME终端并发出命令java时,一切正常。此外,PATH变量的值与我在/etc/profile中定义的值相同。
鉴于上述事实,有冲突,我的理解有什么问题?
发布于 2016-09-05 15:41:29
当您通过显示管理器或tty登录到x会话时,/etc/profile (通常--显然是在您的情况下)是由您的shell程序提供的。在此之后,将提供一个本地文件(假设您在这里使用bash ) ~/.bash_profile、~/.bash_login或~/.profile,这里定义的任何环境变量都将覆盖当前用户的/etc/profile。此环境由您在会话中打开的任何shell继承。这就是为什么我们可以在这些文件中定义环境变量,如您的路径。
打开gnome终端时,默认情况下启动非登录shell,但它继承已经从登录shell或图形shell加载的用户环境。由于~/.bashrc是在启动交互式shell (例如打开gnome终端)时提供的,因此可以使用它覆盖环境的某些元素(如PS1)。
(gnome-终端本身是一个应用程序,而不是shell)
发布于 2016-09-05 15:45:58
短:不
龙:侏儒终端机是终端.你在终端里运行一个外壳。您可以在终端中运行两种类型的shell (登录与否)(尽管gnome终端比其他终端更难运行)。
进一步读:
发布于 2016-09-05 17:32:33
试试这个,它在巴什管用。
shopt -q login_shell && echo " <<< It's a Login Shell >>> " || echo " <<< It's \"NOT\" a Login Shell >>> "顺便说一下,Gnome终端只是一个终端仿真器(一个应用程序),它使用shell(更确切地说是BASH)。
https://unix.stackexchange.com/questions/307990
复制相似问题