美文网首页
Linux环境变量

Linux环境变量

作者: 涅小黑 | 来源:发表于2022-06-28 16:16 被阅读0次

    环境变量是一些已经赋了值的变量,在bash shell中,环境变量分为两类:
    * 全局变量
    * 局部变量

    查看变量

    set

    set命令会显示出全局变量、局部变量以及用户定义变量。

    env

    [root@zzz ~]# env
    XDG_SESSION_ID=18849
    TERM=xterm
    SHELL=/bin/bash
    HISTSIZE=1000
    SSH_TTY=/dev/pts/2
    USER=root
    _=/usr/bin/env
    ...
    

    printenv

    [root@zzz ~]# printenv
    XDG_SESSION_ID=18849
    TERM=xterm
    SHELL=/bin/bash
    HISTSIZE=1000
    SSH_TTY=/dev/pts/2
    USER=root
    _=/usr/bin/env
    ...
    
    [root@zzz ~]# printenv USER
    root
    

    printenv与env一样,printenv多了可以显示单个变量的功能

    设置变量

    局部变量

    #变量名、等号和值之间没有空格
     my_variable=Hello
     echo $my_variable
    #Hello
    

    全局变量

     my_variable="I am Global now"
     export my_variable
     echo $my_variable
    #I am Global now
    

    可见性

    全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量则只对创建它们的
    shell可见。

    [root@zzz ~]# var1=5
    [root@zzz ~]# echo $var1
    5
    [root@zzz ~]# bash
    [root@zzz ~]# echo $var1
    
    [root@zzz ~]
    

    全局环境变量修改只对当前shell有效

    [root@zzz ~]# printenv GOROOT
    /usr/local/go1
    [root@zzz ~]# GOROOT=/usr/local/go
    [root@zzz ~]# printenv GOROOT
    /usr/local/go
    [root@zzz ~]# GOROOT=/usr/local/go1
    [root@zzz ~]# printenv GOROOT
    /usr/local/go1
    [root@zzz ~]# bash
    [root@zzz ~]# printenv GOROOT
    /usr/local/go
    
    

    删除变量unset

    如果你是在子进程中删除了一个全局环境变量,这只对子进程有效。该全局环境变量在父进程中依然可用

    [root@zzz ~]# globle_var=5
    [root@zzz ~]# export globle_var
    [root@zzz ~]# echo $globle_var
    5
    [root@zzz ~]# bash
    [root@zzz ~]# echo $globle_var
    5
    [root@zzz ~]# unset globle_var
    [root@zzz ~]# echo $globle_var
    
    [root@zzz ~]# exit
    exit
    [root@zzz ~]# echo $globle_var
    5
    

    系统环境变量初始化

    Linux系统中有很多默认环境变量,我们需要了解变量的加载过程。
    启动bash shell有3种方式:

    • 登录时作为默认登录shell(账号密码登录)
    • 作为非登录shell的交互式shell(界面系统打开终端,子shell)
    • 作为运行脚本的非交互shell(脚本启动shell)

    登录 shell

    登录shell会从5个不同的启动文件里读取命令:

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

    交互式 shell 进程

    如果bash是作为交互式shell启动的,它就不会访问/etc/profile文件,只会检查用户HOME目录
    中的.bashrc文件。

    非交互式 shell

    bash shell提供了BASH_ENV环境变量。当shell启动一个非交互式shell进
    程时,它会检查这个环境变量来查看要执行的启动文件。如果有指定的文件,shell会执行该文件
    里的命令,这通常包括shell脚本变量设置

    相关文章

      网友评论

          本文标题:Linux环境变量

          本文链接:https://www.haomeiwen.com/subject/bnpavrtx.html