揭秘 env/set/export/declare 的区别

本文详细解释了Linux系统中用于查看变量的四个命令(env、export、set、declare)的功能及区别,并介绍了如何设置Shell环境变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Linux 系统中,这 4 个命令都是可以查看显示 Shell 中的变量。但实际上的区别都在哪呢?

大家都知道,变量可以分为:环境变量自定义变量,两者的区别在于:

  • 环境变量:可以在其进程的子进程中继续有效。
  • 自定义变量:无法延伸至其进程的子进程。

那么,则可以从两者的类型进行区分了:

  • env:显示当前用户的环境变量,但不会显示其自定义变量。
  • export:功能同 env,也是显示当前用户的环境变量,只不过该命令的输出是按变量名进行排序的。
  • set:功能同 declare,显示当前 Shell 中定义的所有变量,包括用户的环境变量和自定义变量。
  • declare:显示当前 Shell 中定义的所有变量,包括用户的环境变量和自定义变量,该命令的输出按变量名进行排序。

结论:

  • env 和 export 显示的是环境变量。
  • set和declare显示的是环境变量和自定义变量。
  • 同作用的区别又在于是否按 变量名 进行排序。

设置 Shell 环境变量

$PATH 环境变量,是 Linux 系统比较常用的变量之一。

格式:多个路径组成,由英文冒号(:)进行分割。

echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ascmcs/.local/bin:/home/ascmcs/bin

而它的作用可以大大的提升工作效率,在执行某个命令时,可以快速的在 Linux 系统找到。如果是自身运维的命令,那么可以将其加入至 $PATH 中。

# 假设将用户家目录下的 tools 添加 $PATH
export PATH=$PATH:/home/ascmcs/tools
s@s-virtual-machine:~$ cat << EOF > ~/.env_config > export COLORTERM="truecolor" export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus,guid=9a8360f17b64c98b11051c9668722b77" export GENICAM_GENTL64_PATH="/opt/spinnaker/lib/spinnaker-gentl" export > > EOF s@s-virtual-machine:~$ echo "source ~/.env_config" >> ~/.bashrc s@s-virtual-machine:~$ source ~/.bashrc declare -x COLORTERM="truecolor" declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus,guid=9a8360f17b64c98b11051c9668722b77" declare -x DBUS_STARTER_ADDRESS="unix:path=/run/user/1000/bus,guid=9a8360f17b64c98b11051c9668722b77" declare -x DBUS_STARTER_BUS_TYPE="session" declare -x DESKTOP_SESSION="ubuntu" declare -x DISPLAY=":0" declare -x GDMSESSION="ubuntu" declare -x GENICAM_GENTL64_PATH="/opt/spinnaker/lib/spinnaker-gentl" declare -x GNOME_DESKTOP_SESSION_ID="this-is-deprecated" declare -x GNOME_SETUP_DISPLAY=":1" declare -x GNOME_SHELL_SESSION_MODE="ubuntu" declare -x GNOME_TERMINAL_SCREEN="/org/gnome/Terminal/screen/96fde94e_a59d_4362_af3d_c8d899299777" declare -x GNOME_TERMINAL_SERVICE=":1.108" declare -x GTK_MODULES="gail:atk-bridge" declare -x HOME="/home/s" declare -x IM_CONFIG_PHASE="1" declare -x LANG="en_US.UTF-8" declare -x LESSCLOSE="/usr/bin/lesspipe %s %s" declare -x LESSOPEN="| /usr/bin/lesspipe %s" declare -x LOGNAME="s" declare -x LS_COLORS="rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim不行啊
最新发布
07-13
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值