.profile启动bash终端时未运行


15

当我启动bash终端时,我的.profile没有被执行。我没有〜/ .bash_profile或〜/ .bash_login,因此.profile应该可以运行,对吗?还有什么可能是错的?

Answers:


23

它不是登录shell。

如果外壳程序是登录外壳程序,它将查找.bash_profile(如果存在),然后查找.profile。其他shell寻找.bashrc

因此,您可以将所需的内容放在.bashrc中的每个shell实例中,并可能在.profile中有一个引用.bashrc的引用。

因此:.bashrc:

stuff you want

.profile的结尾:

[ -n "$BASH" ] && [ -f ~/.bashrc ] && . ~/.bashrc

因此,当我在KDE中运行“ konsole”时,那是一个非登录外壳,对吗?在另一台机器上,我肯定已经把东西放在.profile中,并且当我打开这样的终端时它们可以正常工作-我想我不明白您希望登录时与打开终端时发生什么不同吗?
David Doria

@DavidDoria这取决于,我已经更改了配置或对konsole运行的内容进行了别名,以使其运行bash --login。在您的情况下,它似乎只运行bash,默认情况下不会触发登录shell
Rich Homolka'2

如果使用的是LightDM,则可能是原因。其他显示管理器(例如GDM和KDM)在登录时会显示.profile,但LightDM不会(按设计)。参见bugs.debian.org/cgi-bin/bugreport.cgi?bug=636108
jhenninger 2012年

我正在使用KDM。
大卫·多里亚

2
如果使用的是Gnome终端,则可以执行“编辑”->“配置文件首选项”,转到“标题和命令”选项卡,然后选中“将命令作为登录Shell运行”。然后,只要您按预期方式打开终端,它将在您的.bash_profile或.profile中提供源代码。
Lambart 2013年


1

如果您使用的是图形桌面,则.profile应该由桌面管理器提供。Lightdm 至少在Ubuntu上确实可以获取 .profile文件。参见:https : //bugs.launchpad.net/ubuntu/+source/lightdm/+bug/794315

使用kdm和Kubuntu-12.04,将获取/ etc / kde4 / kdm / Xsession文件,该文件包括.profile文件。Kubuntu-12.10可能会使用lightdm。Ubuntu 12.04使用lightdm,以便/ usr / sbin / lightdm-session源.profile。

我认为方法是(1)在〜/ .profile中设置/导出环境设置,以及(2)由.bash_profile来源的.profile:

[[ -f ~/.profile ]] && . ~/.profile

(并且没有.profile或.bash_profile来源的.bashrc)。

也可以看看:


1
这说明了如何.profile在登录时获取您的资源,但是他实际上想知道bash在启动终端时(而不是登录时)如何获取您的资源
cpast 2013年

当您启动一个新的终端(从KDE内部)时,您不希望源于.profile。.profile的全部目的是使它在登录时一次在图形终端或文本终端上获得;.profile应该是在您登录KDE时获得的。
Freddy Vulto

.profile应该由您的桌面管理器提供。 好吧,这取决于对文件用途的理解。在Debian中,/ etc / profile(以及〜/ .profile作为其扩展名)是用于类似bash的shell的
阿洛瓦·马哈德

如果它是在登录时来源的,则无需再次来源。您的bash会继承它,除非您执行诸如“ export PATH =〜/ .bin”之类的愚蠢操作或导致其被覆盖的行为。
RichieHH '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.