Mac下配置环境变量

使用惯了win,在用mac系统添加环境变量总觉得麻烦,而且几个配置文件也没弄到底有什么区别,今天就来总结一下

1. 环境变量的作用:

我们先来看这样的一个使用场景1,我们有一个程序Java,需要读取某个文件(/data/file.txt)。 那么我们在运行的时候是不是需要做如下的步骤:

  • cd 到Java的目录下;
  • 执行Java命令;

但是,当我们需要同时使用多个工具的时候,比如又有java、maven、git等等,而且是多台机器的时候,我们通常需要很多繁琐的cd操作。而配置环境变量 就可以使我们可以快速的运行这些脚本了。

1.1 使用场景1

如果我们又有JDK1.7,又有JDK1.8,而且需要经常的切换,那么怎么办?
可以配置局部变量比如:

  1 export JDK1.7=/usr/apps/jdk1.7
  2 export JDK1.8=/usr/apps/jdk1.8
  3 export PATH=$JDK1.7/bin

这样,在改变的时候,就不需要去改变目录,而改变部分语句可以了。
 

1.2 环境变量的作用

ok,有了上面的介绍,我们大概就可以知道环境变量到底有什么用处了。用处就是可以在操作系统的各个目录下,都能访问到需要的工具目录内的内容,和Windows的桌面的思想十分相似,而且相当于在系统的各处都具有这个桌面的快捷方式。

 

2. Mac系统下的环境变量

mac 一般使用bash作为默认shell

Mac系统的环境变量:

a. /etc/profile 
b. /etc/paths 
c. ~/.bash_profile 
d. ~/.bash_login 
e. ~/.profile 
f. ~/.bashrc 

加载顺序为:
/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc
当然/etc/profile和/etc/paths是系统级别的,系统启动就会加载,后面几个是当前用户级的环境变量。后面3个按照从前往后的顺序读取,如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,如果~/.bash_profile文件不存在,才会以此类推读取后面的文件。~/.bashrc没有上述规则,它是bash shell打开的时候载入的。

如果没特殊说明,设置PATH的语法都为:

#中间用冒号隔开
export PATH=$PATH::::------:

2.1全局设置

下面的几个文件设置是全局的,修改时需要root权限

1)/etc/paths (全局建议修改这个文件 )
编辑 paths,将环境变量添加到 paths文件中 ,一行一个路径
Hint:输入环境变量时,不用一个一个地输入,只要拖动文件夹到 Terminal 里就可以了。

2)/etc/profile (建议不修改这个文件 )
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

3)/etc/bashrc (一般在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。

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)~/.profile 文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置
使用注意:如果你有对/etc/profile有修改的话必须得重启你的修改才会生效,此修改对每个用户都生效。

2)~/.bashrc 每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
使用注意 对所有的使用bash的用户修改某个配置并在以后打开的bash都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个bash即可生效。

3)~/.bash_profile 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)
使用注意 需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile只对当前用户生效。

 

2.3 单个用户设置

1)~/.bash_profile (任意一个文件中添加用户级环境变量)
(注:Linux 里面是 .bashrc 而 Mac 是 .bash_profile)
若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!默认情况下,他设置一些环境变量
设置命令别名alias ll=’ls -la’
设置环境变量:

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

2)~/.bashrc 同上

如果想立刻生效,则可执行下面的语句:
$ source ./.bash_profile
一般环境变量更改后,重启后生效。

 

3.添加环境变量实战

注意:如果你是第一次配置环境变量,可以使用“touch .bash_profile” 创建一个.bash_profile的隐藏配置文件(如果你是为编辑已存在的配置文件,则使用"open -e .bash_profile"命令):

1)查询是否存在bash_profile文件,在终端中执行:

~/.bash_profile

 

  1. 如果出现路径,这说明已经存在该文件,不需要新建直接跳过新建步骤【2】直接进入步骤【3】编辑 .bash_profile文件。
  2. 出现如下信息,则说明没有该文件需要手动新建:
No such file or directory

2)创建 .bash_profile文件

进入用户home目录,终端中执行:

cd ~
touch .bash_profile

3)输入vim ./.bash_profile 确定enter,然后就打开了bash_profile文件

Mac下配置环境变量_第1张图片

 

科普一下(这段可跳过)在Mac中我们的环境是添加到PATH路径下的,系统运行的时候会直接去找/usr/libexec/path_helper这个文件,里面内容就是我们通过环境变量设置的PATH,所以我们设置环境变量是通过PATH来设置的。

 

Mac下配置环境变量_第2张图片

可以看到它里面加载了我们设置的环境变量。

 

4)从上图可以看到已经配置过的一些环境变量,以添加maven的环境变量为例:

export MAVEN_HOME=/usr/local/apache-maven-3.6.0
export PATH=$PATH:$MAVEN_HOME

点击i建进入编 辑状态。首先export + 自定义名字(MAVEN_HOME) = 路径名称,然后使用export PATH=$PATH:$+自定义名字(MAVEN_HOME)。(在一个PATH下添加多个环境变量后面用:号把路径拼接下来,就像我们在windows上那样,我这里就是这样做的)这样一个环境变量就添加上了,然后按esc退出编辑状态,使用:wq退出。(有时会因为权限问题提示:E45: 'readonly' option is set (add ! to override)错误,这时使用:wq!强制保存退出就ok)

注意:先定义路径(MAVEN_HOME),后用path引入(PATH),是从上到下的顺序,要不然就读不出。
另外一点就是在bash_profile图中我最后添加了$PATH:这里通过它引用了一些系统基础的命令,如我们刚刚使用vim,切记一定要加上否则连系统基础命令都会报command not found的(我刚刚弄的时候忘了加,整得一脸懵逼)

5)使用source ./.bash_profile使刚刚修改的文件生效。

6)这个时候我们就可以使用echo $PATH(echo+自定义名字(MAVEN_HOME)查看单独设置的某一条环境变量)就可以看到刚刚添加的路径了,我常使用xx version的方式查看刚刚添加的是否神效比如上面添加的maven(直接使用mvn version):

Mac下配置环境变量_第3张图片


 

 

 

 

你可能感兴趣的:(shell)