Please enable Javascript to view the contents

Bash语法-命令说明:set、export

 ·  ☕ 2 分钟

相关博客

[Blog-1]: Base语法-Bash选项设置:Set命令

[Blog-2]: Bash语法-命令说明:set、export

易混淆点

  • windows系统bat脚本中,通过SET关键字设置环境变量
  • Bash中的容易由unset,误联想set也可设置变量

正解

  • bash中通过TEST="123"的形式设置变量,只在当前进程生效;
  • bash中通过export TEST="123"的形式设置环境变量,对当前进程及子进程都生效;
  • bash中,将export TEST="123"写入.bashrc等文件中,实现持久化的效果;
  • bash中的set关键字,只能用来设置shell属性(set -x)位置参数($1 $2)

示例

  1. 临时变量,当前会话(进程)中生效
1
TEST=123 && echo $TEST
  1. 设置临时变量,无法在当前进程的子进程中生效

注意命令中的引号,等同于执行脚本中,echo变量

1
TEST=123 && bash -c 'echo "$TEST"'
  1. export环境变量,在子进程中生效
1
export TEST=123 && bash -c 'echo "$TEST"'
  1. set设置位置参数

下面命令输出为:foo=baz 22 33

1
set foo=baz 22 33 ;echo $1 $2 $3
  1. set设置shell属性

更多信息可参考博客:Base语法-Set命令与Shell选项设置,或者官方文档linux-Set命令说明,也可执行help set

总结

Bash中 set 用于设置shell属性位置参数; export关键字用来标记要导出的变量,未导出的变量不会被子进程继承。如果需要持久化,需要将export命令写到.bashrc这类文件中。

参考

[注1]: linux-Set命令说明
[注2]: linux-Export命令说明

分享

Hex
作者
Hex
CloudNative Developer

目录