MAC 设置环境变量path的几种方法

MAC 设置环境变量的方法

要使用的命令:

原因是我之前有一次使用vi 操作Test.java文件时出现了异常中断,所以在当前目录下产生了一个.Test.java.swp文件

但是我使用ls命令查看该目录下,却发现没有这个文件,后来使用ls -a命令查看才知道Test.java.swp是一个隐藏文件。

注:以.开头的文件就是隐藏文件

当我把该隐藏文件删除后再次打开就没有上面的警告了。

[root@localhost tmp]# rm .Test.java.swp

rm: remove regular file `.Test.java.swp'? y

[root@localhost tmp]#

mac 一般使用bash作为默认shell

Mac系统的环境变量,加载顺序为:

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

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

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

——————————————————-

1

2#中间用冒号隔开

export PATH=$PATH::::------:

(一)全局设置

下面的几个文件设置是全局的,修改时需要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 一个文件里,方便管理。

(二)单个用户设置

1)~/.bash_profile (任意一个文件中添加用户级环境变量)

(注:Linux 里面是 .bashrc 而 Mac 是 .bash_profile)

若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!默认情况下,他设置一些环境变量

设置命令别名alias ll=’ls -la’

设置环境变量:

1

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

2)~/.bashrc 同上

如果想立刻生效,则可执行下面的语句:

$ source 相应的文件

一般环境变量更改后,重启后生效。

1. 环境变量介绍

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,而且需要经常的切换,那么怎么办?

可以配置局部变量比如:

exportJDK1.7=/usr/apps/jdk1.7exportJDK1.8=/usr/apps/jdk1.8exportPATH=$JDK1.7/bin

1

2

3

1

2

3

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

1.2 环境变量的作用

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

2. 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

1

2

1

2

可以看出,我的目录下有”/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

1

1

2.2 Mac配置环境变量的地方

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

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

~/.bash_profile (一般在这个文件中添加用户级环境变量) 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!

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文件

sudovi /etc/hosts

1

1

2.3.3 linux下查看和添加PATH环境变量

PATH的格式为:

PATH=$PATH::::——: ,中间用冒号隔开。

2.3.4 添加PATH环境变量:

[root@localhostu-boot-sh4]#export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH

1

1

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

1

2

1

2

2.3.6 操作示例

通过编辑 启动文件 来改PATH。

# vim /etc/profile

1

1

在文档最后,添加:

exportPATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"

1

1

保存,退出。

想立即生效请运行:

#source /etc/profile

1

1

不报错则成功。

如果想立刻生效,则可执行下面的语句:”$ source .bash_profile(这是文件名”。环境变量更改后,在用户下次登陆时生效。

3. 软连接

另外有很多小伙伴可能发现了,在mac上不设置环境变量有的时候也可以直接就访问到了某些文件。这个是为什么呢?答案是用了软连接。

3.1 查看加载文件

可以使用cat命令查看paths文件

localhost:/Sean$cat etc/paths/usr/local/bin/usr/bin/bin/usr/sbin/sbin

1

2

3

4

5

6

1

2

3

4

5

6

答案就是mac会自动加载paths目录,自动加载这些文件夹下的文件,所以使用软连接,在这些文件夹下建立软连接,可能达到相同的效果。

3.2 软连接查看

ls-li

1

1

406876lrwxr-xr-x1root  wheel73792016jar->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jar406877lrwxr-xr-x1root  wheel79792016jarsigner->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jarsigner406878lrwxr-xr-x1root  wheel74792016java->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java406879lrwxr-xr-x1root  wheel75792016javac->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac406880lrwxr-xr-x1root  wheel77792016javadoc->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javadoc406881lrwxr-xr-x1root  wheel75792016javah->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javah406882lrwxr-xr-x1root  wheel75792016javap->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javap406883lrwxr-xr-x1root  wheel76792016javaws->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaws406884lrwxr-xr-x1root  wheel74792016jcmd->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jcmd406885lrwxr-xr-x1root  wheel78792016jconsole->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jconsole406886lrwxr-xr-x1root  wheel73792016jdb->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jdb406887lrwxr-xr-x1root  wheel75792016jdeps->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jdeps406888lrwxr-xr-x1root  wheel74792016jhat->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jhat406889lrwxr-xr-x1root  wheel75792016jinfo->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jinfo406890lrwxr-xr-x1root  wheel73792016jjs->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jjs406891lrwxr-xr-x1root  wheel74792016jmap->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jmap406892lrwxr-xr-x1root  wheel73792016jmc->/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jmc

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

3.3 软连接建立和测试

ln-s /data/kafka  /kafka

1

1

ls-li11373698lrwxr-xr-x1root  wheel1111918:09kafka->/data/kafka

1

2

1

2

4. 参考文献

[1].Mac 可设置环境变量的位置、查看和添加PATH环境变量

[2].Mac 的环境变量设置

[3].Linux下建立软连接

[4].Linux软连接和硬链接

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容