我如何xinit
查看环境变量?
鉴于以下情况xinitrc
:
echo test $HOSTNAME test
test test
我在终端上看到输出,表明$HOSTNAME
xinit 运行时未设置,即使echo $HOSTNAME
在(运行的)终端上startx
,它也能按预期工作
答案1
$HOSTNAME 在您使用它之前不是环境变量export
。在此之前,它只是一个内部“shell 变量”,只有您正在输入命令的这个进程知道。(还有其他一些内置 shell 变量,如这个,以及任何自定义变量你设置也以这种方式运行。)
您使用的测试echo
没有揭示差异,因为所有变量都是由 shell 本身扩展的,而不是由“echo”命令扩展的。
相反,使用env
或printenv
查看子进程继承的实际环境块。(或者,您可以使用declare -p HOSTNAME
检查它是否具有“x”(导出)标志。)
请注意,$HOSTNAME 的存在实际上并不取决于您是否尝试以交互方式或通过脚本使用它 - 它似乎取决于哪个壳正在使用;例如 Bash 提供它,但是 Sh 或 Dash 没有。
因此,如果您的 xinitrc 脚本有#!/bin/bash
标题,即使它不是通过环境继承的,它也能够使用 $HOSTNAME。