我的电脑中有这个.profile
(我正在运行 Ubuntu 12.04):
export TERM="xterm-256color"
该变量似乎没有导出或后来被覆盖为TERM="xterm"
。
使用 Gnome 终端进行测试:
$ gnome-terminal --command=sh
$ echo $TERM
> xterm
$ gnome-terminal --command=bash
$ echo $TERM
> xterm
$ gnome-terminal --command=zsh
$ echo $TERM
> xterm
至少,这不是由于 shell 造成的。这是由于 吗gnome-terminal
?
使用 Xterm 进行另一项测试:
$ xterm sh
$ echo $TERM
> xterm
$ xterm bash
$ echo $TERM
> xterm
$ xterm zsh
$ echo $TERM
> xterm
至少,这不是 Gnome Terminal 特有的,因为它与 Xterm 相同。我必须export TERM="xterm-256color"
在 shell 的配置文件中添加。
LD_LIBRARY_PATH
我在导出时遇到了类似的问题.profile
,它总是被覆盖(我不记得如何解决它)。
TERM
什么会覆盖/阻止从中导出环境变量.profile
,为什么?
注释(更新)
在 Muru 的评论之后,我尝试了这个:gnome-terminal --command="[sh/bash/zsh] -l"
和xterm -ls [sh/bash/zsh]
([sh/bash/zsh]
我的意思是依次用 each 替换),以获得一个登录 shell(但它没有要求输入密码,很有趣),结果不同:我TERM="xterm-256color"
使用 Sh 和 Bash 可以获得,但使用 Zsh 则不能,而使用 Zsh 我总是可以获得TERM="xterm"
。
答案1
~/.profile
通常由登录 shell 运行,因此sh
,、bash
和zsh
在正常调用时不会处理它。使用-l
选项调用它们会使它们成为登录 shell,并导致获取~/.profile
。zsh
不使用~/.profile
,但是~/.zprofile
,因为与其他sh
语法不兼容。
大多数终端都有将 shell 作为登录 shell 运行的选项(至少 GNOME Terminal、XFCE4 Terminal 和 Terminator 有)。您可以启用该选项(如果您经常更改 s profile
,或者只需注销并重新登录即可)。
进一步阅读: