MAC环境变量设置
查看环境变量
查看当前使用的shell
# mac使用的shell有bash 和 zsh,目前主要使用的是 zsh
echo $SHELL
切换shell
# zsh是比bash更强大shell 建议不切换
# 切换bash
chsh -s /bin/bash
# 切换zsh
chsh -s /bin/zsh
查看当前环境变量
echo $PATH
# 输出的结果:
# /usr/local/opt/node@12/bin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/opt/php@7.3/bin:/usr/local/opt/php@7.3/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/node@10/10.17.0/bin:/Users/zjh/Library/Android/sdk/tools:/Users/zjh/Library/Android/sdk/platform-tools:/Library/Apple/usr/bin
环境变量加载顺序介绍
shell为bash的环境变量加载顺序
# 系统级配置 - 系统启动时加载 - 不建议修改
/etc/profile
# 系统级配置 - 系统启动时加载 - 全局设置可以在此添加
/etc/paths
# 全局共有配置 - 所有用户登录后加载 - 可在此添加系统级环境变量
/etc/bashrc
# 当前登录用户的配置 - 用户登录后加载 - 保存当前用户的环境变量
~/.bash_profile
~/.bash_login
~/.bashrc
shell为zsh的环境变量加载顺序
# 系统级配置 - 所有shell都会读取 - 系统启动时加载 - 不建议修改
# System-wide .profile for sh(1)
/etc/profile
# 系统级配置 - zsh shell会读取 - 系统启动时加载 - 不建议修改
# System-wide profile for interactive zsh(1) login shells.
# Setup user specific overrides for this in ~/.zprofile. See zshbuiltins(1)
/etc/zprofile
# 系统级配置 - 系统启动时加载 - 全局设置可以在此添加
/etc/paths
# 全局共有配置 - 所有用户登录后加载 - 可在此添加系统级环境变量
# System-wide profile for interactive zsh(1) shells.
# Setup user specific overrides for this in ~/.zshrc. See zshbuiltins(1)
/etc/zshrc
# 当前登录用户的配置 - 用户登录后加载 - 保存当前用户的环境变量
~/.zprofile
~/.zshrc
设置环境变量
全局设置 (在paths中添加)
# 添加相关的path到paths文件中并保存 /etc/paths
/usr/local/opt/php@7.3/bin
/usr/local/opt/php@7.3/sbin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/Cellar/node@10/10.17.0/bin
/Users/zjh/Library/Android/sdk/tools
/Users/zjh/Library/Android/sdk/platform-tools
为当前用户设置环境变量(zsh shell)
# 方式一 设置到 ~/.zprofile 中
echo 'export PATH="/usr/local/opt/node@10/bin:$PATH"' >> ~/.zprofile
# 方式二 设置到 ~/.zshrc 中
echo 'export PATH="/usr/local/opt/node@10/bin:$PATH"' >> ~/.zshrc
为当前用户设置环境变量(bash shell)
# 方式一 设置到 ~/.profile 中
echo 'export PATH="/usr/local/opt/node@10/bin:$PATH"' >> ~/.profile
# 方式二 设置到 ~/.bashrc 中
echo 'export PATH="/usr/local/opt/node@10/bin:$PATH"' >> ~/.bashrc
参考:
mac中环境变量配置
-
环境变量介绍
1.1 环境变量的作用
环境变量和全局的变量有什么用呢?
1.1.1 使用场景 1
我们先来看这样的一个使用场景 1,我们有一个程序 Java,需要读取某个文件 (/data/file.txt)。
那么我们在运行的时候是不是需要做如下的步骤:
-
cd 到 Java 的目录下;
-
执行 Java 命令;
但是,当我们需要同时使用多个工具的时候,比如又有 java、maven、git 等等,而且是多台机器的时候,我们通常需要很多繁琐的 cd 操作。而配置环境变量 就可以使我们可以快速的运行这些脚本了。
1.1.1 使用场景 2
如果我们又有 JDK1.7,又有 JDK1.8,而且需要经常的切换,那么怎么办?
可以配置局部变量比如:
export JDK1.7=/usr/apps/jdk1.7
export JDK1.8=/usr/apps/jdk1.8
export PATH=$JDK1.7/bin
这样,在改变的时候,就不需要全部的改变,而改变部分就可以了。
1.2 环境变量的作用
ok,有了上面的介绍,我们大概就可以知道环境变量到底有什么用处了。用处就是可以在操作系统的各个目录下,都能访问到需要的工具目录内的内容,和 Windows 的桌面的思想十分相似,而且相当于在系统的各处都具有这个桌面的快捷方式。
- Mac 环境变量配置
在讲解 Mac 环境变量配置之前,大家可以打开 dos 框,输入
“echo $PATH” 查看当前的 path 下有什么东西。
个人的结果是这样的:
localhost:/ Sean$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/Sean/Software/hadoop/hadoop-2.2.0/bin:/Users/Sean/Software/Scala/scala-2.11.8/bin:/Users/Sean/Software/Spark/spark-2.0.2-bin-hadoop2.7/bin
可以看出,我的目录下有”/usr/local/bin、/usr/bin、/Users/Sean/Software/hadoop/hadoop-2.2.0/bin” 都被作为环境变量进行加载了。
那么下面我就讲解下,这个东西到底应当如何配置。
2.1 环境变量文件的优先级
其配置文件的优先级如下所示:
/etc/profile
/etc/paths
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
2.2 Mac 配置环境变量的地方
1)/etc/paths (全局建议修改这个文件 )
编辑 paths,将环境变量添加到 paths 文件中 ,一行一个路径
Hint:输入环境变量时,不用一个一个地输入,只要拖动文件夹到 Terminal 里就可以了。
2)/etc/profile (建议不修改这个文件 )
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
3)/etc/bashrc (一般在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell 执行时,不管是何种方式,都会读取此文件。
4)~/.bash_profile (一般在这个文件中添加用户级环境变量)
每个用户都可使用该文件输入专用于自己使用的 shell 信息, 当用户登录时, 该文件仅仅执行一次!
- 创建一个文件:
sudo touch /etc/paths.d/mysql - 用 vim 打开这个文件(如果是以 open -t 的方式打开,则不允许编辑):
sudo vim /etc/paths.d/mysql - 编辑该文件,键入路径并保存(关闭该 Terminal 窗口并重新打开一个,就能使用 mysql 命令了)
/usr/local/mysql/bin
据说,这样可以自己生成新的文件,不用把变量全都放到 paths 一个文件里,方便管理。
2.3 常见操作命令
2.3.1 操作系统判断
- 首先要知道你使用的 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。 - 如果是 Bourne Shell。
那么你可以把你要添加的环境变量添加到你主目录下面的. profile 或者. bash_profile,如果存在没有关系添加进去即可,如果没有生成一个。
2.3.2 修改 host 文件
sudo vi /etc/hosts
2.3.3 linux 下查看和添加 PATH 环境变量
PATH 的格式为:
PATH=$PATH::::——: ,中间用冒号隔开。
2.3.4 添加 PATH 环境变量:
[root@localhost u-boot-sh4]#export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH
2.3.5 查看 PATH 环境变量:
[root@localhost u-boot-sh4]#echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
2.3.6 操作示例
- 通过编辑 启动文件 来改 PATH。
# vim /etc/profile
- 在文档最后,添加:
export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
保存,退出。
- 想立即生效请运行:
#source /etc/profile
不报错则成功。
如果想立刻生效,则可执行下面的语句:$ source .bash_profile(这是文件名)。
环境变量更改后,在用户下次登陆时生效。
- 软连接
另外有很多小伙伴可能发现了,在 mac 上不设置环境变量有的时候也可以直接就访问到了某些文件。这个是为什么呢?答案是用了软连接。
3.1 查看加载文件
可以使用 cat 命令查看 paths 文件
localhost:/ Sean$ cat etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
答案就是 mac 会自动加载 paths 目录,自动加载这些文件夹下的文件. 所以使用软连接,在这些文件夹下建立软连接,可能达到相同的效果。
3.2 软连接查看
ls -li
406876 lrwxr-xr-x 1 root wheel 73 7 9 2016 jar -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jar
406877 lrwxr-xr-x 1 root wheel 79 7 9 2016 jarsigner -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jarsigner
406878 lrwxr-xr-x 1 root wheel 74 7 9 2016 java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
406879 lrwxr-xr-x 1 root wheel 75 7 9 2016 javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
406880 lrwxr-xr-x 1 root wheel 77 7 9 2016 javadoc -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javadoc
406881 lrwxr-xr-x 1 root wheel 75 7 9 2016 javah -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javah
406882 lrwxr-xr-x 1 root wheel 75 7 9 2016 javap -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javap
406883 lrwxr-xr-x 1 root wheel 76 7 9 2016 javaws -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaws
406884 lrwxr-xr-x 1 root wheel 74 7 9 2016 jcmd -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jcmd
406885 lrwxr-xr-x 1 root wheel 78 7 9 2016 jconsole -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jconsole
406886 lrwxr-xr-x 1 root wheel 73 7 9 2016 jdb -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jdb
406887 lrwxr-xr-x 1 root wheel 75 7 9 2016 jdeps -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jdeps
406888 lrwxr-xr-x 1 root wheel 74 7 9 2016 jhat -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jhat
406889 lrwxr-xr-x 1 root wheel 75 7 9 2016 jinfo -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jinfo
406890 lrwxr-xr-x 1 root wheel 73 7 9 2016 jjs -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jjs
406891 lrwxr-xr-x 1 root wheel 74 7 9 2016 jmap -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jmap
406892 lrwxr-xr-x 1 root wheel 73 7 9 2016 jmc -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jmc
3.3 软连接建立和测试
ln -s /data/kafka /kafka
ls -li
11373698 lrwxr-xr-x 1 root wheel 11 1 19 18:09 kafka -> /data/kafka