一、环境变量

所谓的环境变量是对于命令的作用。例如你在某个目录安装这个命令,你退出这个目录这个命令就没法用了。那么你就可以设置环境变量,无论你鼠标箭头在哪里都可以用这个命令。

使用Ubuntu 进行开发绕不开的就是环境变量的配置,由于Linux系统严格的权限管理,造成Ubuntu系统有多个环境变量配置文件,如果不了解其调用顺序,很有可能遇到配置了环境变量,而看不到其发生作用。

参考:http://www.linuxidc.com/Linux/2016-09/135476.htm

补充:什么是shell?

Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令,并把它送入内核去执行。内核是Linux系统的心脏,从开机自检就驻留在计算机的内存中,直到计算机关闭为止,而用户的应用程序存储在计算机的硬盘上,仅当需要时才被调入内存。Shell是一种应用程序,当用户登录linux系统时,Shell就会被调入内存去执行。Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。

Ubuntu android 环境变量 ubuntu环境变量的作用_Ubuntu android 环境变量

ubuntu用到的终端默认使用的shell 是bash。

 

1. Ubuntu 环境变量配置文件

Ubuntu Linux系统环境变量配置文件分为两种:系统级文件和用户级文件。

(1)系统级文件

/etc/profile         # 在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
                     # 并从/etc/profile.d目录的配置文件中搜集shell的设置。这个文件一般就是调用/etc/bash.bashrc文件。

/etc/bash.bashrc     # 系统级的bashrc文件,为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

/etc/environment     # 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量。

 (2)用户级文件

“~”符号,表示用户目录。bash shell的用户环境配置文件,位于用户的主目录下,主要有下面几个:

~/.profile           # 在登录时用到的第三个文件 是.profile文件.该文件定义了用户登录账号的基本环境:包括PATH的路径及一些alias别名设置等。
                     # 当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
                     # 如果更改了自己.profile文件的内容,那么直到退出并再次登录,该文件被重新读取后,更改才会生效。也可用 source .profile 立即生效。 

~/.bashrc            # 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

~/.bash_logout       # 当每次退出系统(退出bash shell)时,执行该文件.

~/.bash_history      # 是bash shell的历史记录文件,里面记录了你在bash shell中输入的所有命令。可通过HISTSIZE环境变量设置在历史记录文件里保存记录的条数。

/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。

Ubuntu android 环境变量 ubuntu环境变量的作用_配置文件_02

Ubuntu android 环境变量 ubuntu环境变量的作用_Ubuntu android 环境变量_03

sea@sea-vm:~$ cd ..                             # 从用户目录切换到 home目录
sea@sea-vm:/home$ ls
sea
sea@sea-vm:/home$ sudo useradd alex             # 新建用户 alex
[sudo] sea 的密码:
sea@sea-vm:/home$ ls
sea                                             # alex的用户目录没有自动建立
sea@sea-vm:/home$ sudo useradd alex
useradd:用户“alex”已存在                        # 经验证,alex用户确实已经建立
sea@sea-vm:/home$ sudo passwd alex              # 给alex用户设密码
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
sea@sea-vm:/home$ su - alex                     # 切换到 alex用户
密码:
没有目录,将以 HOME=/ 登录                        # 因为没有用户目录,以根目录登录
$ su - sea
密码:
sea@sea-vm:~$ cd ..
sea@sea-vm:/home$ ls
sea
sea@sea-vm:/home$ sudo mkdir /home/alex         # 建立alex的用户目录
sea@sea-vm:/home$ ls
alex  sea
sea@sea-vm:/home$ ls -l
总用量 8
drwxr-xr-x  2 root root 4096 6月  12 21:11 alex
drwxr-xr-x 19 sea  sea  4096 6月  12 20:57 sea
sea@sea-vm:/home$ sudo chown alex:alex alex      # 更改alex目录的属主和数组
sea@sea-vm:/home$ ls -l
总用量 8
drwxr-xr-x  2 alex alex 4096 6月  12 21:11 alex
drwxr-xr-x 19 sea  sea  4096 6月  12 20:57 sea
sea@sea-vm:/home$ su - alex
sea@sea-vm:/home$ su - alex
密码:
$ pwd                                             # 没bash配置文件,没有用户标识符($前为空)
/home/alex                                        # 确认alex用户目录已经建立。

sea@sea-vm:/etc/skel$ sudo cp .bash_logout /home/alex
sea@sea-vm:/etc/skel$ sudo cp .bashrc /home/alex
sea@sea-vm:/etc/skel$ sudo cp .profile /home/alex
sea@sea-vm:/etc/skel$ cd /home/alex
sea@sea-vm:/home/alex$ ls -a
.  ..  .bash_history  .bash_logout  .bashrc  .profile  # 确认 bash配置相关文件已经拷贝到alex用户目录下
sea@sea-vm:/home/alex$ su - alex
密码: 
alex@sea-vm:~$ ls                                  # 注意看:alex用户标识符,即 lex@sea-vm:~ 已经出现
alex@sea-vm:~$ ls -a
.  ..  .bash_history  .bash_logout  .bashrc  .profile

实例:ubuntu中给新用户添加用户标识符

给新用户添加用户标识

 

2. 执行顺序

 /etc/profile ->/etc/enviroment -->$HOME/.profile-->$HOME/.env

 

3. 设置环境变量的方法

(1)设置系统环境变量

  • 打开终端并输入:sudo gedit /etc/environment。
  • 输入用户密码。这时输入的密码是不可见的。
  • 在PATH="...."的末尾处添加: :/opt/EmbedSky/4.3.3/bin ,其中/opt/EmbedSky/4.3.3/bin为你自己需要设置的环境变量路径。
  • 使其立即生效,在终端执行: source /etc/environment 或者重启电脑即可。

(2)设置当前用户环境变量

  • 开终端并输入:  sudo gedit ~/.bashrc。
  • 前面的步骤会打开.bashrc文件,在其末尾添加:export PATH=/opt/EmbedSky/4.3.3/bin:$PATH,其中/opt/EmbedSky/4.3.3/bin为你自己需要设置的环境变量路径。
  • 在终端执行:source ~/.bashrc或者重启电脑即可。
 二、常用命令

env : 查看当前环境变量

export  :  设置或显示环境变量。

source : 在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限"

env
export name = "SN"
source /etv/profile

 echo:会将输入的字符串送往标准输出。输出的字符串间以空白字符隔开并在最后加上换行号(加-n不换行)。类似于python中的print。 

|:管道符,它的作用是 将前一个命令的结果 交给后一个命令使用。

重定向  

>   重定向,如果的文件存在,则覆盖文件内容,文件不存在时创建文件
1>  标准正确输出,同上
2>  标准错误输出,同上

>>  重定向,如果的文件存在,则向文件追加内容,文件不存在时创建文件
1>> 标准正确输出,同上  
2>> 标准错误输出,同上

&>  标准正确输出和标准错误输出,同上