使用Gentoo和KDE 4,打开Konsole或xterm不会在/ etc / profile中提供定义的东西。 该文件通常由loginshell提供 ,但是在graphics环境中可以将其视为loginshell? 这是否应该在X会议之前来源? Konsole的shell应该用bash –login来设置吗? 这是一个错误?
谢谢你的帮助。
这取决于。
除非shell作为“loginshell”启动,这是系统向shell发送信号的方式,这是用户第一次与此计算机进行交互,它是以“子”shell启动的。
“login”shell通过设置的任何控制机制(/ etc / profile,/etc/profile.d/,以及通常为.profile和.bashrc(如果bash)的本地点文件)来源环境。
“子”壳只是inheritance父母的环境,但有时也会运行一些点文件,具体取决于它们的configuration。
在configuration了X的大多数系统中,点文件是由任何启动窗口pipe理器的进程以及xterms或者konsoles或者从其中inheritance的任何东西来提供的。 这是因为它不被视为login会话,因为您在启动konsole时已经login。
如果你愿意,你可以设置你的konsole运行“bash –login”,但是当你运行一些依赖于你正在使用–login参数进行修改的环境variables的时候,这可能会有意想不到的副作用。
根据Gentoo手册中的这个页面,在Gentoo中 ,您将需要在/etc/env.d目录下的文件中定义环境variables,而不是在/ etc / profile本身中。
loginshell通过以“ – ”开头来区分(通过shell解释器)。 也就是说,loginbash shell的argv [0]将会是bash副bash。 对于其他shell也是如此(-ksh vs ksh,-csh vs csh,-sh vs sh等)。这是通过login程序或其他authentication步骤完成的。 Bash提供了-l或–login选项,但是这应该与-bash等价。
如果你想确保/ etc / profile被读取(而不是只设置一个inheritance的环境),你可以直接在〜/ .profile中读取它。 使用适当的文件名称为您select的shell。
我认为这是一个gentoo中的错误…检查您的〜/ .xsession错误涉及'keychain'的错误…
新兴的networkingmisc / keychain为我修复了它。