Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';s输入命令后命令输出的差异";环境",&引用;“出口”&引用;“设置”;在Solaris中的bashshell下?_Bash_Shell_Export_Solaris_Env - Fatal编程技术网

什么';s输入命令后命令输出的差异";环境",&引用;“出口”&引用;“设置”;在Solaris中的bashshell下?

什么';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

操作系统:Solaris

Shell:bashshell

场景:分别输入命令:“env”、“export”和“set”(不带任何参数),将有一个返回的变量和值列表


我的问题:输入这三个命令后返回的值有什么区别?

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),非常感谢。我想我已经清楚了区别