`TERM` 环境变量未从 `.profile` 导出?

`TERM` 环境变量未从 `.profile` 导出?

我的电脑中有这个.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,、bashzsh在正常调用时不会处理它。使用-l选项调用它们会使它们成为登录 shell,并导致获取~/.profilezsh不使用~/.profile,但是~/.zprofile,因为与其他sh语法不兼容

大多数终端都有将 shell 作为登录 shell 运行的选项(至少 GNOME Terminal、XFCE4 Terminal 和 Terminator 有)。您可以启用该选项(如果您经常更改 s profile,或者只需注销并重新登录即可)。

进一步阅读:

相关内容