011-MAC 设置环境变量path的几种方法
一、概述
首先要知道你使用的Mac OS X是什么样的Shell,使用命令
echo $SHELL
如果输出的是:csh或者是tcsh,那么你用的就是C Shell。
如果输出的是:bash,sh,zsh,那么你的用的可能就是Bourne Shell的一个变种。
Mac OS X 10.2之前默认的是C Shell。
Mac OS X 10.3之后默认的是Bourne Shell。
从 macOS Catalina 版开始,zsh (Z shell) 是所有新建用户帐户的默认 Shell。bash 是 macOS Mojave 及更低版本中的默认 Shell。
mac 一般使用bash作为默认shell。如果是Bourne Shell,那么你可以把你要添加的环境变量添加到你主目录下面的.profile或者.bash_profile,如果存在没有关系添加进去即可,如果没有生成一个。
查看系统支持的shell
cat /etc/shells
可以根据自己的喜好切换shell
1.1、Mac系统的环境变量
加载顺序为:
系统级别:a、/etc/profile ;b、/etc/paths ;
用户级别:c、~/.bash_profile ;d、~/.bash_login ;e、~/.profile ;f、~/.bashrc
说明:
- 全局配置【系统级别的,系统启动就会加载】:/etc/profile, /etc/profile.d/*.sh, /etc/bashrc
- 个人配置:~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc 是当前用户级的环境变量。
c,d,e按照从前往后的顺序读取
,如果c文件存在,则后面的几个文件就会被忽略不读了
,以此类推。
~/.bashrc没有上述规则,它是bash shell打开的时候载入的。这里建议在c中添加环境变量
登陆式SHELLL配置文件加载顺序:/etc/profile > .bash_profile > .bash_login > .profile > .bash_logout.
非登录式SHELL配置文件加载顺序:/etc/bash.bashrc > .bashrc
注: 先加载的配置文件的配置,可能会被后加载的配置所覆盖
1.2、设置PATH的语法:
如果没特殊说明,
#中间用冒号隔开
export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:------:<PATH N>
二、具体说明
2.1、全局设置
下面的几个文件设置是全局的,修改时需要root权限
1)/etc/paths (全局建议修改这个文件 )
编辑 paths,将环境变量添加到 paths文件中 ,一行一个路径
Hint:输入环境变量时,不用一个一个地输入,只要拖动文件夹到 Terminal 里就可以了。
2)/etc/profile (建议不修改这个文件 )
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
3)/etc/bashrc (一般在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。如,加入mysqlstart、mysql和mysqladmin命令的别名,保证每一个用户都可以使用这3个命令。
4)自定义系统路径
1.创建一个文件:
sudo touch /etc/paths.d/mysql
2.用 vim 打开这个文件(如果是以 open -t 的方式打开,则不允许编辑):
sudo vim /etc/paths.d/mysql
3.编辑该文件,键入路径并保存(关闭该 Terminal 窗口并重新打开一个,就能使用 mysql 命令了)
/usr/local/mysql/bin
据说,这样可以自己生成新的文件,不用把变量全都放到 paths 一个文件里,方便管理。
2.2、单个用户设置
1)~/.bash_profile (任意一个文件中添加用户级环境变量)
(注:Linux 里面是 .bashrc 而 Mac 是 .bash_profile),在Catalina中mac 下采用Zsh代替了bash,Zsh加载的配置文件是~/.zshrc,所以.bash_profile没有生效,
如果要兼容:方法一、把.bash_profile中的配置,挪到.zshrc文件中。方法二、在.zshrc文件中再加载一次.bash_profile
若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!默认情况下,他设置一些环境变量
可以设置
设置终端配色、
设置命令别名:alias ll='ls -la'
设置环境变量:export PATH=/opt/local/bin:/opt/local/sbin:$PATH
2)~/.bashrc 同上
如果想立刻生效,则可执行下面的语句:
$ source 相应的文件
一般环境变量更改后,重启后生效。
zsh
zsh下的用户环境配置文件包括.zlogin、.zprofile、.zshrc、.zshenv和.zlogout
- .zshenv中存放的环境变量配置项在任何场景下都能被读取,这里通常把$PATH等变量写在这里,这样无论是在交互shell,或者运行程序都会读取此文件
- .zprofile 的作用与 .bash_profile 相同,并且在登录时运行(包括通过 SSH 运行);是给
ksh
用户的一个.zlogin
的替代品,所以如果使用了.zlogin
就不必再关心此文件 - .zshrc 的作用与 .bashrc 相同,并针对每个新的“终端”会话运行,主要用在交互shell,对终端交互shell有用
zlogin
在login shell的时候读取,所以比如X系统启动的时候会读取此文件,所以不会再运行中重复读取- zlogout退出终端的时候读取,用于做一些清理工作
如果您正在使用 .profile(一个兼容 POSIX 的描述文件),则您可以将以下命令添加到 .zprofile,以便 zsh 自动读取这个描述文件的设置
加载顺序:.zshenv → [.zprofile if login] → [.zshrc if interactive] → [.zlogin if login] → [.zlogout sometimes].
常用:.zprofile、.zshrc
三、操作【查看、设置】
3.1、mac修改hosts
sudo vi /etc/hosts
可以使用mac版本的switchhost
3.2、path操作
查看path
echo $PATH
编辑
vim /etc/profile
在文档最后,添加:
export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
保存,退出。:wq
想立即生效请运行:
source /etc/profile
四、利用alias切换多版本
vim ~/.bash_profile
# maven
MAVEN_HOME_323=/Users/lihongxu6/developTool/apache-maven-3.2.3/bin
MAVEN_HOME_354=/Users/lihongxu6/developTool/apache-maven-3.5.4/bin
alias mvn323="export PATH=$MAVEN_HOME_323:$PATH"
alias mvn354="export PATH=$MAVEN_HOME_354:$PATH"
使用时
source ~/.bash_profile
mvn323
或者mvn354
cv