Linux环境变量

Linux 环境变量详解 带你一命通关 Linux 环境变量 十五分钟手撕环境变量原理 阅读详情

1. Linux环境变量

bash shell使用环境变量来存储shell会话和工作环境的相关信息,如系统信息、存储临时数据和配置信息等。
bash shell有两种环境变量:

  • 全局变量:所有进程都可以访问的环境变量
  • 局部变量:只能在定义它的进程中访问。

1.1 printenv 查看全局变量

使用printenv 来查看全局环境变量

$ printenv			#查看所有全局环境变量
SHELL=/bin/bash
WSL2_GUI_APPS_ENABLED=1
WSL_DISTRO_NAME=Ubuntu-20.04
NAME=GodOfWar
...

#查看环境变量SHELL
$ printenv SHELL 	#等于echo $SHELL
/bin/bash

1.2 设置自定义局部环境变量

设置局部环境变量格式为
环境变量名=“环境变量值”(注意变量名、等号和值之间没有空格):

$ my_env="Hello"
$ echo $my_env
Hello

1.3 export 设置全局环境变量

使用export可以将局部环境变量升级为全局环境变量
注意 先创建局部环境变量,再将其导出到全局环境中

$ export my_env
$ echo $my_env
Hello

1.4 修改环境变量的值

修改环境变量的值与自定义环境变量一样,直接赋值即可

$ my_env="Hello World!"
$ echo $my_env
Hello World!

1.5 unset删除局部环境变量

使用unset命令删除局部环境变量

$ unset my_env
$ echo $my_env

注意:关于$符号的使用,使用变量时,变量名前面加$;操作变量时则不加$。这里printenv是特例。

1.6 PATH环境变量

PATH环境变量定义用于查找命令和程序目录,PATH中的目录之间用冒号分隔。

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

1.7 环境变量持久化

登录Linux系统时,bash shell会作为登录shell启动,通常从5个不同的启动文件中读取命令

  • /etc/profile
  • $HOME/.bash_profile
  • $HOME/.bashrc
  • $HOME/.bash_login
  • $HOME/.profile

下面分别介绍这5个文件

1.7.1 /etc/profile

/etc/profile文件是系统中默认bash shell的启动文件,系统中每个用户登录时都会执行该启动文件。

$ cat /etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then		#/etc/bash.bashrc存在,则运行它
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do		#迭代/etc/profile.d下的所有.sh文件
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

1.7.2 $HOME目录下的启动文件

  • $HOME/.bash_profile
  • $HOME/.bashrc
  • $HOME/.bash_login
  • $HOME/.profile

$HOME下的启动文件大多数Linux系统只用其中的一两个。这些文件以.开头,表示为隐藏文件,其中的环境变量在每次启动bash shell时生效。

$ cat $HOME/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

export PATH=~/bin:$PATH

.bashrc会做两件事:

  • 检查/etc目录下的通用bashrc文件
  • 为用户提供一个定制自己命令别名和脚本函数的地方

综上所述,推荐将需要持久化的环境变量保存在$HOME/.bashrc文件中。

1.8 数组环境变量

$ my_env=(zhangsan lisi wangwu)
$ echo $my_env
zhangsan
$ echo ${my_env[*]}
zhangsan lisi wangwu

$ unset my_env[1]		#删除my_env数组中第2个环境变量
$ echo ${my_env[*]}	#查看my_env所有环境变量
zhangsan wangwu
$ unset my_env			#删除my_env整个数组环境变量
$ echo ${my_env[*]}

Linux export命令教程:创建和管理环境变量(附实例详解和注意事项) export命令在Linux中用于创建环境变量。。你可以使用echo。 阅读详情

相关推荐

Linux入门进阶-如何在Linux中使用export命令

系统在创建每一个新的 Shell 时会拷贝导出变量,子 Shell 可以访问或修改导出变量,但是这种修改父 Shell 看不到。此时,系统中将有两个 Shell 进程,一个是登录时系统启动的 Shell 进程,另一个是系统为运行脚本创建的 Shell 进程。如果在一个 Shell 脚本中定义了一个变量,该脚本运行时,这个定义的变量只是该脚本内的一个局部变量,子 Shell 无法引用它。在这个 Shell 中,可以使用 Shell 命令或声明变量,也可以创建并运行 Shell 脚本程序。

关注我!带你一路 "狂飙" 到底! 2521

linux下查看和修改环境变量PATH的方法

查看PATH:echo $PATH 以添加mongodb server为列 修改方法一: export PATH=/usr/local/mongodb/bin:$PATH //配置完后可以通过echo $PATH查看配置结果。 生效方法:立即生效 有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置 用户局限:仅对当前用户 修改方法二: 通过修改.bashrc文件: vim ~/.bashrc //在最后一行添上: export PATH=/usr/local/mongo

vcj1009784814的博客 3040

如何在 Linux 中设置持久环境变量?

默认情况下,当您在 shell 中设置环境变量时,它们只在当前会话中有效,并在退出 shell 后失效。但是,有时您可能需要设置持久环境变量,以便它们在每次登录时都可用,即使在退出 shell 后也不会失效。在 Linux 中,持久环境变量通常是通过在用户的配置文件中设置来实现的。请注意,如果您在多个配置文件中设置了相同的环境变量,那么后面的设置将覆盖之前的设置。通过正确设置环境变量,您可以轻松地配置系统和应用程序的行为,以满足您的需求。现在,您的环境变量已经设置为持久的,并且将在每次登录时自动加载。

2301_79331230的博客 542

【export】Linux中export命令介绍,三种方法设置环境变量

Linux中export命令介绍,三种方法设置环境变量

Xminyang的博客 5万+

[RK3399][Android7.1] 调试笔记 --- 编译GSL5680 touch提示错误

Platform: RK3399 OS: Android 7.1 Kernel: v4.4.83 现象: 之前在rk3288平台上使用过GSL5680的Touch,现在移植过来一直报如下错误: make[1]: `include/generated/vdso-offsets.h' is up to date. CHK include/generated/compi...

Kris Fei's blog 1056

从零到一:基于DESeq2的转录组差异表达分析实战指南

本文详细介绍了基于DESeq2的转录组差异表达分析实战指南,涵盖数据准备、标准化处理、差异分析及结果解读等关键步骤。DESeq2凭借其稳定性和对低表达基因的友好处理,成为转录组数据分析的首选工具。文章还提供了常见问题排查和优化建议,帮助研究者高效完成从分析到发表的完整流程。

weixin_26759093的博客 274

【Linux】环境变量

环境变量有关内容

weixin_74078718的博客 1万+

torch.jit.script 与 torch.jit.trace

它们是 PyTorch 的即时编译(Just-in-Time Compilation)模块的一部分,用于提高模型的执行效率并支持模型的部署。方法只跟踪了给定输入张量的执行路径,因此在使用转换后的模块对象进行推理时,输入张量的维度和数据类型必须与跟踪时使用的相同。跟踪模型可以看作是一个具有相同功能的脚本模型,但它还保留了原始模型的动态特性,可以使用更多高级特性,如动态图和控制流。它接受一个模型和一个示例输入,并记录模型在给定输入上的执行过程,然后返回一个跟踪模型。的模型文件,并将其转换为评估模式。

leoatliang的博客 1万+

【Linux】Linux 环境变量

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。

Antonio915的博客 1433

十二、基于FPGA实现slave SelectMAP配置逻辑

slave SelectMAP配置

weixin_41838250的博客 8755

【重启后nvidia-smi 命令出现错误】

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

qq_44769377的博客 5212

Linux下的环境变量【详解】

环境变量一般指的是在操作系统中用于指定操作系统运行环境的一些参数。在链接C/C++程序的代码时,会用到动静态库,但是动静态库我们并没有显示的去指定过让系统去那个路径下寻找它,但是每次都可以链接成功,这是因为有了环境变量的帮助。环境变量还会有一些特殊的用途,比如可以用作身份验证。

tang20030306的博客 1万+

数据架构师必看:大数据时代的架构演进与实践

数据架构是企业数据资产的“骨架”——它决定了数据能多快被处理、多准被分析、多安全被存储。本文将聚焦从传统架构到大数据架构的关键转折点,覆盖技术选型、典型场景、落地挑战三大核心命题,帮助读者建立“演进思维”而非“固定思维”。本文将按“历史演进→核心概念→技术原理→实战案例→趋势展望”的逻辑展开,用“超市仓库升级”贯穿始终,让抽象的技术概念具象化。传统数据仓库:精但小,适合结构化、批量分析。大数据架构:大但乱,适合全类型、海量数据存储。流批一体:解决实时+批量的效率问题。湖仓一体。

AI Agent Harness Engineering 913

Linux——环境变量

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数

qq_63943454的博客 4161

基于STM32、HAL库的MCP4013T-103E/CH 数字电位器驱动程序设计

define MCP4013_I2C_ADDR (0x5F << 1) // HAL库使用7位地址左移1位,或直接使用0xBE/0xBF。#include "i2c.h" // 包含你的I2C初始化相关的头文件,例如由CubeMX生成的 i2c.h。大于127的值会被截断。// MCP4013的读操作:主机发起读取请求,从机返回当前滑片位置的一个字节。// 使用HAL_I2C_Master_Transmit直接发送数据。// 使用HAL_I2C_Master_Receive读取一个字节。

corlin6688的博客 126

元宇宙通证- 九、IT/ICT发展史全景长图

九、IT/ICT发展史全景长图 (一)综述 IT是Information Technology的缩写,意为”信息技术“,包含现代计算机、网络、通信等信息领域技术。自1844年人类历史上发出来第一份电报,实现了信息的长图传输,信息技术发展的历史大幕随之拉开。信息技术的普遍应用,是进入信息社会的标志。 IT技术最早发源于半导体,然后发展处计算机、通信网和互联网,进而演进到现在的AI、XR、计算机、大数据、物联网、工业互联网、区块链、量子计算等。 有人说元宇宙是下一代互联网,有人说元宇宙是互联网的终极形态。 我们

沧海之巅的专栏 1万+

Linux 环境变量

unset命令+变量名可删除已经存在的环境变量。在unset命令中引用环境变量时,记住不要使用$。(如果要用到变量,使用$;如果要操作变量,不使用$。但用printenv显示某个变量的值是个例外,printenv HOME)用以上这种方式用户自己进行定义的环境变量,下次重新启动Linux就被删除了。如果想不被删除,一直存在,我们该怎么办?我们需要在系统自启动文件~/.bashrc中进行配置,将export命令写入到该文件内,这样我们下次重启系统后,这个变量就不会丢失了。

2401_87935803的博客 2385

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【Linux】Linux环境变量

Linux环境变量的说明:如何查看环境变量、如何配置环境变量、常用的环境变量

HXFman的博客 1719

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Linux之环境变量

本文介绍了环境变量的相关概念。

一只小卷毛的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: bash shell基础命令(二)
下一篇: OpenHarmony4.0配置应用开机自启
Mart!nHu
博客等级 码龄7年 1万+粉丝 50原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值