什么';s输入命令后命令输出的差异";环境",&引用;“出口”&引用;“设置”;在Solaris中的bashshell下?
操作系统:Solaris Shell:bashshell 场景:分别输入命令:“env”、“export”和“set”(不带任何参数),将有一个返回的变量和值列表什么';s输入命令后命令输出的差异";环境",&引用;“出口”&引用;“设置”;在Solaris中的bashshell下?,bash,shell,export,solaris,env,Bash,Shell,Export,Solaris,Env,操作系统:Solaris Shell:bashshell 场景:分别输入命令:“env”、“export”和“set”(不带任何参数),将有一个返回的变量和值列表 我的问题:输入这三个命令后返回的值有什么区别?set命令显示会话中定义的所有shell变量 export命令(通常)列出了上面的一个子集。它们是通过导出或声明-x创建的:全局可见的变量,即对子进程可见的变量 env命令用于启用将脚本从帐户移植到另一个帐户或从机器移植到机器。 env在修改过的或不同的环境中运行程序。env和export
我的问题:输入这三个命令后返回的值有什么区别?set命令显示会话中定义的所有shell变量
export
命令(通常)列出了上面的一个子集。它们是通过导出
或声明-x
创建的:全局可见的变量,即对子进程可见的变量
env
命令用于启用将脚本从帐户移植到另一个帐户或从机器移植到机器。
env在修改过的或不同的环境中运行程序。env和
export
命令产生相同的信息,但格式不同。而bash
的export
产生了与ksh
或(Bourne)shell版本截然不同的输出。请注意,set
和export
是shell内置命令,但是env
是一个外部命令,它除了列出环境的内容之外还有其他用途(尽管这是它的用途之一)
set
命令列出您创建的变量。这包括环境变量、常规(非环境)变量和函数定义(我们将在这里忽略)
考虑:
x1=abc
x2=def; export x2
export x3=ghi
有两个导出变量(x2
和x3
)和一个常规(非导出)变量。set
命令将列出所有三个<代码>导出和环境
将仅列出导出的代码
命令的输出由POSIX标准强制执行。这只是变量名和值,后跟一个换行符:
name=value
传统上,Bourne shell只是以同样的方式列出set
和export
的变量
如果值包含空格或其他需要保护的字符,但在其他情况下使用name=value
表示法,则Korn shell会将值括在引号中
bash
中的set
命令使用引号中受保护的值生成赋值。但是,export
的输出是一个带有引号保护的declare-xvar=value
。大概的想法是,您可以使用导出>文件
,然后使用源文件
,将环境变量重置为执行导出时环境中的值
总结
并非所有shell变量都是环境变量
set
命令列出所有shell变量,也可能列出函数
export
命令列出了环境变量
set
和export
命令内置在shell中
不带参数的env
命令列出了它从执行它的进程继承的环境
出于好奇,您知道Solaris机器上有哪个bash
版本吗?我试用了Solaris9机器,得到了GNUBash版本2.05.0(1)
,比我预期的要老得多(但是,Solaris9还没有进入老年期,更不用说年轻期了)。我的版本是GNUBash版本3.00.16(1),非常感谢。我想我已经清楚了区别