gpt4 book ai didi

bash - 在Solaris的Bash Shell下输入 "env"、 "export"、 "set"命令后输出的命令有什么区别?

转载 作者:行者123 更新时间:2023-11-29 09:26:32 27 4
gpt4 key购买 nike

操作系统:Solaris

shell :Bash shell

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

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

最佳答案

envexport 命令产生相同的信息,但格式不同。 bashexport 产生的输出与 ksh 或 (Bourne) shell 版本的输出截然不同。请注意,setexport 是 shell 内置命令,但是 env 是一个外部命令,除了列出环境(尽管这是它的用途之一)。

set 命令列出了您创建的变量。这包括环境变量、常规(非环境)变量、函数定义(我们将在此处忽略)。

考虑:

x1=abc
x2=def; export x2
export x3=ghi

有两个导出变量(x2x3)和一个常规(非导出)变量。 set 命令将列出所有三个; exportenv 只会列出导出的。

env 的输出命令由 POSIX 标准强制执行。这只是变量名称和值后跟换行符:

name=value

传统上,Bourne shell 只是简单地以相同的方式为 setexport 列出变量。

如果值包含空格或其他需要保护的字符,Korn shell 会将值括在引号中,否则使用 name=value 表示法。

bash 中的set 命令生成赋值,其值在引号中受到保护。但是,export 的输出是带有引号保护的 declare -x var=value。一般的想法大概是您可以使用 export > file 后跟 source file 将环境变量重置为您执行 导出


总结

  1. 并非所有 shell 变量都是环境变量。
  2. set 命令列出所有 shell 变量,也可能列出函数。
  3. export 命令列出环境变量。
  4. setexport 命令内置于 shell 中。
  5. 不带参数的 env 命令列出了它从执行它的进程继承的环境。

关于bash - 在Solaris的Bash Shell下输入 "env"、 "export"、 "set"命令后输出的命令有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15262292/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com