读取和设置 Ubuntu 环境变量(很全面)

读取和设置 Ubuntu 环境变量(很全面)

环境变量

在 Ubuntu 中,环境变量是一些动态命名值,用于影响程序的运行方式。它们包含了系统或用户的配置信息,帮助程序在运行时获取必要的环境信息。 环境变量通常存储在内存中,程序可以通过这些变量访问到相关的数据。

常用的环境变量👇

  1. PATH: 包含可执行文件的搜索路径,当你在终端输入命令时,系统会在这些路径中查找相应的可执行文件。

  2. HOME: 指向当前用户的主目录,通常用于存放用户的个人文件和配置。

  3. USER: 当前登录用户的用户名。

  4. SHELL: 当前用户的默认命令行解释器(如 Bash)。

  5. LANG: 系统语言设置,影响程序的语言输出。

查看环境变量

set

打印出所有的 shell 变量和环境变量,包括函数。内容全面但较为简单,不建议使用这个。

$ set
BASH=/usr/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=([0]="0")
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]="2" [1]="11")
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="5" [1]="1" [2]="16" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='5.1.16(1)-release'
COLORTERM=truecolor
COLUMNS=80
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
DESKTOP_SESSION=ubuntu
DIRSTACK=()
DISPLAY=:0
EUID=1000
GDMSESSION=ubuntu
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_SETUP_DISPLAY=:1
GNOME_SHELL_SESSION_MODE=ubuntu
GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/db18d791_d25c_4b3c_ae6a_0f93e5453044
GNOME_TERMINAL_SERVICE=:1.127
GROUPS=()
GTK_MODULES=gail:atk-bridge
HISTCONTROL=ignoreboth
# 后面还有很多

echo

打印出特定的环境变量

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

declare

列出当前 shell 中的所有变量(包括环境变量、局部变量和函数),以一种更结构化的方式显示他们的类型和内容。

$ declare -p
declare -- BASH="/usr/bin/bash"
declare -r BASHOPTS="checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:progcomp:promptvars:sourcepath"
declare -i BASHPID
declare -A BASH_ALIASES=()
declare -a BASH_ARGC=([0]="0")
declare -a BASH_ARGV=()
declare -- BASH_ARGV0
declare -A BASH_CMDS=()
declare -- BASH_COMMAND
declare -a BASH_COMPLETION_VERSINFO=([0]="2" [1]="11")
declare -a BASH_LINENO=()
declare -a BASH_SOURCE=()
declare -- BASH_SUBSHELL
declare -ar BASH_VERSINFO=([0]="5" [1]="1" [2]="16" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
declare -- BASH_VERSION="5.1.16(1)-release"
declare -x COLORTERM="truecolor"
declare -- COLUMNS="417"
declare -- COMP_WORDBREAKS
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
declare -x DESKTOP_SESSION="ubuntu"
declare -a DIRSTACK=()
declare -x DISPLAY=":0"
declare -- EPOCHREALTIME
# 后面还有很多

显示的格式 declare -x VAR= "value"(环境变量),declare VAR= "value"(局部变量)。并且带有符号:

  1. -i 将变量声明为整数类型
  2. -A 将变量声明为 hash table
declare -A my_array
my_array["key"]="value"
echo "${my_array["key"]}"  # 输出 "value"
  1. -a 将变量声明为普通数组
declare -a my_array=(1 2 3)
echo "${my_array[1]}"  # 输出 "2"
  1. -x 将变量导出为环境变量,使其在子进程中可用
declare -x MY_VAR="Hello"

printenv

查看指定的环境变量

printenv HOME

在文件系统查看进程的环境变量 /proc

cat /proc/<PID>/environ

设置环境变量

终端使用 export 设置环境变量

这种方式仅在当前会话中有效:

$ export MY_VAR= "some_value"

配置文件添加环境变量

  1. ~/.bashrc:打开一个终端窗口时加载的环境变量文件
  2. ~/.profile:在用户登陆时加载
  3. ~/.bash_profile:登录 shell 的配置文件

向文件中添加环境变量的方式:

$ echo 'export MY_VAR= "some_value"' >> ~/.bashrc

使用命令使得更改生效:

$ source ~/.bashrc

通过脚本设置环境变量

通过脚本设置的环境变量将在脚本执行期间有效

#!/bin/bash
export MY_VAR="some_value"

在运行某个指令时设置临时环境变量

$ MY_VAR="some_value" command_to_run
posted @ 2024-11-18 11:44  KKKKevin  阅读(76)  评论(0编辑  收藏  举报