linux下设置环境变量有三种方法,一种用于当前终端,一种用于当前用户,一种用于所有用户:

一:用于当前终端:

在当前终端中输入:export PATH=$PATH:<你的要加入的路径>

不过上面的方法只适用于当前终端,一旦当前终端关闭或在另一个终端中,则无效。

export NDK_ROOT=/home/jiang/soft/Android-ndk-r8e #只能在当前终端使用。

二:用于当前用户:

在用户主目录下有一个 .bashrc 隐藏文件,可以在此文件中加入 PATH 的设置如下:

$ gedit ~/.bashrc

加入:

export PATH=<你的要加入的路径>:$PATH

如果要加入多个路径,只要:

export PATH=<你要加入的路径1>:<你要加入的路径2>: … :$PATH

当中每个路径要以冒号分隔。

这样每次登录都会生效

添加PYTHONPATH的方法也是这样,在.bashrc中添加

export PYTHONPATH=/home/zhao/setup/caffe-master/python:/home/zhao/setup/mypy:$PYTHONPATH

保存后在终端输入 $ source ~/.bashrc 使环境变量立即生效

三:用于所有用户:

$ sudo gedit /etc/profile

加入:
export PATH=<你要加入的路径>:$PATH

就可以了。

终端输入:echo $PATH 可以查看环境变量

注意,修改环境变量后,除了第一种方法立即生效外,第二第三种方法要立即生效,可以source ~/.bashrc或者注销再次登录后就可以了!


环境变量里有什么?
可以直接用无参数的 printenv 命令来输出当前 session 的环境变量以及环境变量的值。若加上参数,则是输出某个变量的值。若想更方便地查看,可以将 printenv 的输出传给 less来查看环境变量(1):

printenv | less
可以看到,平时常接触到的PWD,HOME,USER等都在其中。

如果要在命令的参数中使用某个变量的值,可以输入 “$变量名” (2)。比如:

ls $HOME/bin
用户自定义变量
除了系统自带的变量,用户还可以自定义变量:

rit@rit-X405UA:~$ foo=FOO
rit@rit-X405UA:~$ hello='Hello World'
rit@rit-X405UA:~$ echo $foo
FOO
rit@rit-X405UA:~$ echo $hello
Hello World

注意到等号左右两边不留空格,因为空格在 shell 命令里面被视为分隔符,并不是无意义的符号。

注意到如果出现特殊字符,如空格,$,\等等,要用引号扩起来(3)。

如果要让接下来在该 shell 运行的程序能够访问到该变量,则要使用 export 命令:

rit@rit-X405UA:~$ export foo hello
像这样在当前的 session 中定义的变量只在当前 session 有效,即退出再登录这个变量就不存在了。若要在每次登录到 shell 的时候都能使用到该变量,需将该变量定义到环境变量的配置文件中。


ref1
ref2

  1. 什么是shell?
    答:在计算机科学中,Shell俗称壳(用来区别于核,核是指“内核”),Shell是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

在很多并不正式的场合,这两个名词表达的意思相同,即命令解释器。但从严格的意义上讲,命令行是指供用户输入命令的界面,其本身只是接受输入,然后把命令传递给命令解释器,后者就是Shell,从本质上讲,Shell是一个程序,它在用户和操作系统之间提供了一个面向行的可交互接口,用户在命令行中输入命令,运行在后台的Shell把命令转换成指令代码发送给操作系统。Shell并非只有命令行这一种形式,例如GNOME、KDE等图形界面也是Shell,不过它们是GUI Shell,都是为了解决人机交互的问题。

目前在Linux环境下有几种不同类型的Shell,常用的有Bourne Again Shell(BASH)、TCSH Shell、Z-Shell。不同的Shell提供不同的语法和特性。

例如在Ubuntu中,可以在etc/passwd文件中查看到自己的默认shell程序,如下所示:

biotest@ubuntu:~$ cat /etc/passwd |grep biotest
biotest:x:1000:1000:UBUNTU,,,:/home/biotest:/bin/bash

由上述结果可知,biotest用户所用到shell是bash。bash shell程序位于/bin目录内,从长列表中可以看出/bin/bash是一个可执行程序:

biotest@ubuntu:~$ ls -lF /bin/bash
-rwxr-xr-x 1 root root 1037528 May 16  2017 /bin/bash*

注:在Linux系统中,当使用ls,添加了-F参数时,会在每个输出项后追加文件的类型标识符,具体含义为:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;

  1. 什么是bash?
    答:bash相当于shell中的某个,shell的范围更广。bash的全称是Bourne again / born again。

  2. 什么是环境变量?
    答:shell 在 shell 会话中保存着大量信息。这些信息被称为 (shell 的) 环境。 程序获取环境中的数据(即环境变量)来了解本机的配置。虽然大多数程序用配置文件来存储程序设置, 一些程序会根据环境变量来调整他们的行为。Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。 通常每个用户默认的环境都是相同的,这个默认环境实际上就是一组环境变量的定义。 环境变量是全局的,设置好的环境变量可以被所有当前用户所运行的程序所使用。 用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。在bash shell中,环境变量分为两类,分别为全局变量,局部变量。

shell 在环境中存储了两种基本类型的数据,虽然 bash 几乎无法分辨这些数据的类型。 它们是环境变量和 shell 变量。Shell 变量是 bash 存放的少量数据。剩下的都是 环境变量。除了变量,shell 也存储了一些可编程的数据,即别名和 shell 函数。

  1. 如何查看环境变量?
    答:printenv可以显示全局变量

通过echo来查看变量的值,如下所示:

biotest@ubuntu:~$ echo $HOME
/home/biotest
biotest@ubuntu:~/miniconda2/opt$ echo $PWD # PWD是显示当前目录
/home/biotest/miniconda2/opt

$的作用
在echo命令中,在变量名前加上$就能显示当前变量的值,它也能让变量作为命令行参数,如下所示:

biotest@ubuntu:~/miniconda2/opt$ ls $HOME
biosoft    Downloads         Miniconda2-latest-Linux-x86_64.sh  Public     Videos
Desktop    examples.desktop  Music                              Templates
Documents  miniconda2        Pictures                           test

设置局部用户定义变量
一旦启动了bash shell(或者执行一个shell脚本),就能创建在这个shell进程内可见的局部变量了。可以通过等号给环境变量赋值,值可以是数值或字符串,需要注意的是,在shell中,变量名,等号和值之间没有空格,否则会出错,如下所示:

biotest@ubuntu:~/miniconda2/opt$ echo $mywords
biotest@ubuntu:~/miniconda2/opt$ mywords=hello
biotest@ubuntu:~/miniconda2/opt$ echo $mywords
hello

如果要给变量赋值一个含有空格的字符串,必须要加上单绰号来界定字符串的首和尾,如下所示:

biotest@ubuntu:~/miniconda2/opt$ mywords=Hello linux
linux: command not found
biotest@ubuntu:~/miniconda2/opt$ mywords="Hello linux"
biotest@ubuntu:~/miniconda2/opt$ echo $mywords
Hello linux

设置了局部变量后,就能在shell进程的任何地方使用它了,但是,如果生成了另外一个shell,在它的子shell中就无法使用。类似地,如果在子进程中设置了一个局部变量,一旦退出了子进程,那个局部环境变量就无法使用。

在设定全局环境变量的进程所创建的子进程中,该变量都是可见的。创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中。,这个过程是通过export命令实现的,变量名前面不加$,如下所示:

biotest@ubuntu:~$ my_words="I love Linux"
biotest@ubuntu:~$ export my_words
biotest@ubuntu:~$ echo $mywords
Hello linux
biotest@ubuntu:~$ bash
bbiotest@ubuntu:~$ echo $my_words
I love Linux

删除环境变量
删除环境变量使用unset命令,前面不加$符号,如下所示:

biotest@ubuntu:~$ echo $my_words
I love Linux
biotest@ubuntu:~$ unset my_words
biotest@ubuntu:~$ echo $my_words
biotest@ubuntu:~$

在涉及变量名时,什么时候使用‘,什么时候不使用‘,只需要这样记忆:要具体地查看变量的值时,就需要‘符号,如果不需要查看变量的值,只针对变量本身操作,就不使用‘符号。

  1. setprintenv都可以查看系统变量,它们有什么区别?
    答:(1)通过set可以设置shell选项,如果只输入set而不加任何参数,它就会显示shell 变量,环境变量,和定义的 shell 函数,此时与printenv命令类似,与 printenv 命令不同的是,set 命令的输出很友好地按照首字母顺序排列
    (2)set命令显示当前shell的变量,包括当前用户的变量;printenv(输入env也可以)命令只显示当前用户的变量。每个shell有自己特有的变量(set)显示的变量,这个和用户变量是不同的,当前用户变量和你用什么shell无关,不管你用什么shell都在,比如HOME,SHELL等这些变量,但shell自己的变量不同shell是不同的,比如BASH_ARGC, BASH等,这些变量只有set才会显示,是bash特有的。

  2. 环境变量存放在哪个地方?
    答:当你进入系统的时候,linux 就会为你读入系统的环境变量,这些环境变量存放在什么地方,那就是环境变量的文件中。Linux 中有很多记载环境变量的文件,它们被系统读入是按照一定的顺序的,这些文件包括以下部分:

6.1 /etc/profile:
此文件是bash shell默认的主启动文件,只要登录了Linux,bash就会执行/etc/profile启动文件中的命令,该文件存储的是整个系统的环境变量,它为每个用户设置环境信息,这个文件只有root才能修改。当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell 的设置。这个文件,是任何用户登陆操作系统以后都会读取的文件(如果用户的shell 是csh 、tcsh 、zsh ,则不会读取此文件),用于获取系统的环境变量,只在登陆的时候读取一次。

6.2/etc/bashrc:
在执行完/etc/profile 内容之后,如果用户的Shell运行的是bash ,那么接着就会执行此文件。另外,当每次一个新的bash shell 被打开时, 该文件被读取。每个使用bash的用户在登陆以后执行完/etc/profile 中内容以后都会执行此文件,在新开一个bash 的时候也会执行此文件。因此,如果你想让每个使用bash 的用户每新开一个bash 和每次登陆都执行某些操作,或者给他们定义一些新的环境变量,就可以在这个里面设置。
注:/etc/profile,/etc/bashrc 是系统全局环境变量设定

6.3 $HOME/.bashrc:
该文件包含专用于单个人的bash shell 的bash 信息,当登录时以及每次打开一个新的shell 时, 该该文件被读取。 单个用户此文件的修改会影响到他以后的每一次登陆系统和每一次新开一个bash 。因此,可以在这里设置单个用户的特殊的环境变量或者特殊的操作,那么每次它新登陆系统或者新开一个bash ,都会去获取相应的特殊的环境变量和特殊操作。

6.4$HOME/.bash_profile:
每个用户都可使用该文件输入专用于自己使用的shell 信息。当用户登录时,该文件仅仅执行一次,默认情况下,它设置一些环境变量,执行用户的.bashrc 文件。单个用户此文件的修改只会影响到他以后的每一次登陆系统。因此,可以在这里设置单个用户的特殊的环境变量或者特殊的操作,那么它在每次登陆的时候都会去获取这些新的环境变量或者做某些特殊的操作,但是仅仅在登陆时。
/.bashrc和/.bash_profile都只对当前的用户永久生效,也就是说假如用户A设置了些类环境变量,这个环境变量只有A才能使用,而对于其他的B,C,D等用户来说,这个变量是不存在的。在根目录下,通过ls -a可以查看这两个文件,正常情况下,这两个文件是隐藏的。

6.5$HOME/.bash_logout:
当每次退出系统( 退出bash shell) 时, 执行该文件。

  1. /.bashrc和/.bash_profile的区别是什么?
    答:原则上来说,设置自己的环境变量时,在这两个文件中任意选一个即可,它们的区别在于:~/.bash_profile是交互式login方式进入bash shell运行而~/ .bashrc是交互式non-login方式进入bash shell运行。二者设置大致相同。通俗点说,就是.bash_profile文件只会在用户登录的时候读取一次,而.bashrc在每次打开终端进行一次新的会话时都会读取。

  1. 如何查看地自定义的别名?
    答:通过set或printenv无法查看通过alias命名的别名,此时需要通过alias来查看,如下所示:
alias egrep=’egrep —color=auto’
alias fgrep=’fgrep —color=auto’
alias grep=’grep —color=auto’
alias l=’ls -CF’
alias la=’ls -A’
alias ll=’ls -alF’
alias ls=’ls —color=auto’
  1. Shell中的一些大写字母是什么意思?
    答:这些大写字母表示一些特殊的环境变量,如下所示:

  2. 设置环境变量常用的指令有哪些?
    答:常用的命令有echo,export,env,set,unset,readonly等,如下所示:

(1)echo
查看某个环境变量.

(2)env
查看所有环境变量

(3)set
查看本地定义的所有shell变量.

(4)unset
删除一个环境变量,例如:

biotest@ubuntu:~exportWords=”Hello,world!”biotest@ubuntu:  echo WordsHello,world!biotest@ubuntu:  unset Words
biotest@ubuntu:~echoWords
biotest@ubuntu:~$

(5)readonly
设置只读环境变量.

linux的环境变量设置相关推荐

  1. Linux下环境变量设置

    1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错误. 2.那么什么是环境变 ...

  2. linux node环境变量设置

    文章目录 前言 一.安装node 二.环境变量设置 三.参考文档 前言 因为设置一次就好了,所以会经常忘记,这里记下来,以后设置的话就方便多了 一.安装node 安装的话就不说了,直接去node官网看 ...

  3. linux java环境变量设置

    JAVA环境变量设置: #vi /etc/profile#在文件最后添加以下内容: export JAVA_HOME=/usr/java/jdk1.8.0_91 export PATH=$JAVA_H ...

  4. 如何设置linux lang环境变量,设置linux环境变量LANG(示例代码)

    export LANG="zh_cn.gb118030" 一般来说要设置 Linux 系统的环境变量只需要在 /etc/profile (全局) 或者 ~/.bashrc (单个用 ...

  5. linux 下环境变量设置

    Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量.系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有效. 修改用户环境变量 用户环境变量通常被存储在下面的文件中: ...

  6. linux6.6 sudo环境变量,linux sudo环境变量设置

    VS2010添加资源文件 VS2010中资源文件管理在 双击打开Resources.resx 选择左上角资源文件类型 然后复制资源文件 粘贴到空白区域 则会自动生成资源文件代码 在项目中使用该资源文件 ...

  7. Linux查看环境变量当前信息和查看命令

    系统的环境变量在配置web server以及编写程序都常常被用到, 因此了解必要的关于系统变量的知识是非常有必要的,下面关于linux系统变量的查看以及方法. 在Windows下,查看环境变量的命令是 ...

  8. linux环境变量又叫局部变量的区别,Linux下环境变量(.bash_profile和.bashrc的区别)...

    在linux系统下,如果下载并安装了应用程序,在启动时很有可能在键入它的名称时出现"command not found"的提示内容.如果每次都到安装目标文件夹内,找到可执行文件 来 ...

  9. centos 6.4 java环境变量_CentOS中JAVA_HOME的环境变量设置

    http://blog.csdn.net/wind520/article/details/9308809 运行Java应用的时候,提示无法找到JAVA_HOME,查询java -version [ji ...

最新文章

  1. 自定义Counter使用
  2. PPT文件转avi/wmv/mpeg格式最好的软件
  3. 正在更新office_Windows 9月10日累积更新:已修复和损坏的问题
  4. C#中提示:可访问性不一致:参数类型XXX比方法XXX的可访问性低
  5. 单林多域群集环境中将Exchange 2003迁移到Exchange 2010之二
  6. 用户名_网络安全与防御-OpenSSH用户名枚举及其检测方法
  7. AC010笔记之三:总结
  8. 如何打出好看的数学公式呢?
  9. 《xxx重大需求征集系统的》可用性和可修改性战术分析
  10. 实体词典 情感词典_情感词典最全版
  11. ISO 2768-1 标准
  12. python 携程订单接口_携程api开发
  13. 开源电子商城系统:罗列几个电子商城系统,和一个不错的开源电子商城项目:mall,先做技术调研,主要还是学习代码。
  14. 【github】机器学习(Machine Learning)深度学习(Deep Learning)资料
  15. 任正非:春风送暖入屠苏——2010年新年献词
  16. EMC常见术语-dB、dBm、dBw以及如何计算
  17. [转载]ExtJs4 笔记(11) Ext.ListView、Ext.view.View 数据视图
  18. 众安保险今日正式招股,保险如何结合科技打造新经济?
  19. 全文检索-ElasticSearch入门
  20. 一个陌生女人的来信-未完不续

热门文章

  1. 深透研究病毒1—my doom
  2. linux中uniq命令的使用
  3. 光伏发电的新方向—光伏+储能风口已至
  4. PLSQL Developer安装、OCI库、tnsnames.ora配置
  5. FreePBX 12 SIP协议30分钟自动挂断问题处理
  6. (三)为Ubuntu系统添加新的普通用户
  7. 一款可视化的Redis管理工具-Another Redis DeskTop Manager
  8. 判断复选框是否被选中
  9. C语言之输出字符串长度
  10. Matlab的数字滤波器设计(IIR FIR)