Linux---set、env和export命令介绍

 

在Linux中,我们经常需要设置或显示shell的选项、参数或变量。这些选项、参数或变量可以影响shell的运行行为和环境。为了方便地管理这些选项、参数或变量,Linux提供了一些常用的shell内置命令,如set、env和export等。这些命令有各自的用途和区别,本文将对它们进行简单的介绍和比较。

set命令

set命令可以用来设置或显示shell的选项或位置参数。选项是一些开关,可以控制shell的一些特性,如是否退出当一个命令失败,是否显示执行的每一个命令等。位置参数是一些特殊的变量,用来存储命令行上的参数,如$0表示当前脚本的名字,$1表示第一个参数,$2表示第二个参数,依次类推。set命令的语法格式如下:

set [选项] [参数]

复制

如果不带任何选项或参数,set命令会显示当前shell的所有变量和函数。如果带有选项,set命令会打开或关闭相应的选项。如果带有参数,set命令会把它们赋值给位置参数。例如:

  • 使用set -x来打开调试模式,显示每一个执行的命令及参数。
  • 使用set +x来关闭调试模式,恢复正常输出。
  • 使用set -u来检查是否有未定义的变量,并在发现时报错并退出。
  • 使用set -- a b c来把a b c赋值给位置参数$1 $2 $3。

env命令

env命令可以用来设置或显示环境变量。环境变量是一些特殊的变量,它们可以被当前shell及其子进程继承和使用。环境变量通常用来存储一些系统或用户相关的信息,如PATH表示可执行文件的搜索路径,HOME表示用户的主目录,LANG表示语言设置等。env命令的语法格式如下:

env [选项] [变量=值]... [命令 [参数]...]

复制

如果不带任何选项或参数,env命令会显示当前shell的所有环境变量。如果带有变量=值的形式,env命令会设置相应的环境变量。如果带有命令和参数,env命令会在设置好环境变量后执行该命令,并传递相应的参数。例如:

  • 使用env来显示当前shell的所有环境变量。
  • 使用env PATH=/usr/local/bin:$PATH来在当前路径前面添加一个新路径。
  • 使用env LANG=zh_CN.UTF-8 date来以中文格式显示日期。

export命令

export命令可以用来设置或显示导出变量。导出变量是一种环境变量,它们可以被当前shell及其子进程继承和使用。不同于env命令,export命令只能设置当前shell的导出变量,而不能影响其他进程。export命令的语法格式如下:

export [选项] [变量[=值]]...

复制

如果不带任何选项或参数,export命令会显示当前shell的所有导出变量。如果带有变量或变量=值的形式,export命令会设置或修改相应的导出变量。例如:

  • 使用export来显示当前shell的所有导出变量。
  • 使用export name=Alice来设置一个名为name的导出变量,值为Alice。
  • 使用export name来把一个已存在的变量name标记为导出变量。

set、env和export命令的比较

set、env和export命令都可以用来设置或显示shell的选项、参数或变量,但它们有以下的区别:

  • set命令可以设置或显示shell的选项或位置参数,但不能设置或显示环境变量或导出变量。
  • env命令可以设置或显示环境变量,但不能设置或显示shell的选项或位置参数。env命令还可以在设置好环境变量后执行一个命令,并传递相应的参数。
  • export命令可以设置或显示导出变量,但不能设置或显示shell的选项或位置参数。export命令只能影响当前shell及其子进程的导出变量,而不能影响其他进程。

set、env和export命令总结

set、env和export命令是Linux中常用的shell内置命令,它们可以帮助我们管理shell的运行状态和环境。当然,这些命令也有一些细节和注意事项,例如如何引用或展开变量,如何避免空格或特殊字符的影响等。在使用这些命令时,我们需要根据不同的场景和需求,选择合适的命令和选项。