如何获取.xinitrc(xinit、startx)来查看环境变量

如何获取.xinitrc(xinit、startx)来查看环境变量

我如何xinit查看环境变量?

鉴于以下情况xinitrc

echo test $HOSTNAME test

test test我在终端上看到输出,表明$HOSTNAMExinit 运行时未设置,即使echo $HOSTNAME在(运行的)终端上startx,它也能按预期工作

答案1

$HOSTNAME 在您使用它之前不是环境变量export。在此之前,它只是一个内部“shell 变量”,只有您正在输入命令的这个进程知道。(还有其他一些内置 shell 变量,如这个,以及任何自定义变量设置也以这种方式运行。)

您使用的测试echo没有揭示差异,因为所有变量都是由 shell 本身扩展的,而不是由“echo”命令扩展的。

相反,使用envprintenv查看子进程继承的实际环境块。(或者,您可以使用declare -p HOSTNAME检查它是否具有“x”(导出)标志。)


请注意,$HOSTNAME 的存在实际上并不取决于您是否尝试以交互方式或通过脚本使用它 - 它似乎取决于哪个壳正在使用;例如 Bash 提供它,但是 Sh 或 Dash 没有。

因此,如果您的 xinitrc 脚本有#!/bin/bash标题,即使它不是通过环境继承的,它也能够使用 $HOSTNAME。

相关内容