zoukankan      html  css  js  c++  java
  • mac的环境变量

    查看环境变量

    输入一下命令:

    env
    

    回车显示如下

    TMPDIR=/var/folders/15/x9lp8tvn1sv7hy79bv1mxr0r0000gn/T/
    __CFBundleIdentifier=com.apple.Terminal
    XPC_FLAGS=0x0
    TERM=xterm-256color
    SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.5tlbZA2P4S/Listeners
    XPC_SERVICE_NAME=0
    TERM_PROGRAM=Apple_Terminal
    TERM_PROGRAM_VERSION=440
    TERM_SESSION_ID=4184D918-D2C0-40EA-AF65-4A1F68A68396
    SHELL=/bin/zsh
    HOME=/Users/dshvv
    LOGNAME=dshvv
    USER=dshvv
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
    SHLVL=1
    PWD=/Users/dshvv
    OLDPWD=/Users/dshvv
    LANG=zh_CN.UTF-8
    _=/usr/bin/env
    

    如果只看path,则输入echo $PATH即可

    echo $PATH
    

    回车后会有如下

    /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
    

    环境变量文件优先级

    /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc

    环境变量分类

    全局系统变量

    /etc/profile
    /etc/paths
    是系统级别的,系统启动就会加载,对每个用户都生效。
    每次修改需要重启方可生效,否则只能source ~/.bashrc才会立刻生效哦

    用户系统变量

    ~/.bash_profile
    ~/.bash_login
    ~/.profile
    是当前用户级的环境变量
    优先级是从前往后的顺序读取,如有~/.bash_profile,则后几个文件就会被忽略不读了,如不存在,才会以此类推读取后面的文件。
    每个用户都可使用该文件输入专用于自己使用的shell信息,用户进入系统,系统启动就会加载,
    和全局系统变量一样,该文件也仅仅执行一次!
    以上也是每次都需要重启才生效,否则只能source ~/.bashrc才会立刻生效哦

    终端特有环境变量

    ~/.bashrc
    没有上述规则,它是bash shell打开的时候载入的。
    为每一个运行bash shell的用户执行此文件.每次bash shell被打开时,该文件就会被读取。
    修改完毕,如果想立刻生效,则可执行下面的语句:source ~/.bashrc
    否则只有新开的shell窗口才会生效

    需要注意的是:

    zsh其实并不使用 /etc/profile文件,而是使用 /etc/zsh/ 下面的 zshenv、zprofile、zshrc、zlogin 文件,并以这个顺序进行加载。

    bash才会去加载/etc/bashrc。而zsh则会加载/etc/zshrc。
    在mac系统中,在之前的终端是使用bash的。但是从 macOS Catalina 版开始,bash下岗了,被zsh这个更先进的终端系统所替代。
    终端是zsh还是bash,其实是没有啥区别的。其中的最大变数就是:配置文件到底是.zprofile|.zshrc,还是.bash_profile|bashrc。
    因为,在很多地方,都是在这里加载环境变量的,如果zsh和bash切换了,那么就意味着一些环境变量可能就失效了。
    .zprofile 的作用与 .bash_profile 相同,并且在登录时运行(包括通过 SSH 运行)。
    .zshrc的作用与 .bashrc 相同,并针对每个新的“终端”会话运行。
    可以通过 echo $SHELL来查看当前的shell类型

    我该用哪个

    ~/.bash_profile
    因为我看大家配置mysql、还是jdk等等,都是拿这个举例子。猜测如下
    如果使用全局变量,则会污染环境,影响比较大
    如果使用终端特有的变量,则每次都要加载,浪费性能
    所以使用了用户的系统变量
    用户的系统变量中bash_login 需要登陆,才能继续进行,显然不方便
    至于~/.profile 网上对比~/.bash_profile 对比的不多,推测可能是按照加载顺序优先配置~/.bash_profile的缘故吧。

  • 相关阅读:
    linux下自动同步internet时间
    String,StringBuffer与StringBuilder的区别
    Spring Boot CLI安装
    java中Date与String的相互转化
    MyBatis Sql语句中的转义字符
    MyBatis详解 与配置MyBatis+Spring+MySql
    MyBatis的foreach语句详解
    不可变集合 Immutable Collections
    Java日期时间使用总结
    Java将一段逗号分割的字符串转换成一个数组
  • 原文地址:https://www.cnblogs.com/dshvv/p/15261844.html
Copyright © 2011-2022 走看看