一、环境变量
所谓的环境变量是对于命令的作用。例如你在某个目录安装这个命令,你退出这个目录这个命令就没法用了。那么你就可以设置环境变量,无论你鼠标箭头在哪里都可以用这个命令。
使用Ubuntu 进行开发绕不开的就是环境变量的配置,由于Linux系统严格的权限管理,造成Ubuntu系统有多个环境变量配置文件,如果不了解其调用顺序,很有可能遇到配置了环境变量,而看不到其发生作用。
参考:http://www.linuxidc.com/Linux/2016-09/135476.htm
补充:什么是shell?
Shell是一种具备特殊功能的程序,它提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令,并把它送入内核去执行。内核是Linux系统的心脏,从开机自检就驻留在计算机的内存中,直到计算机关闭为止,而用户的应用程序存储在计算机的硬盘上,仅当需要时才被调入内存。Shell是一种应用程序,当用户登录linux系统时,Shell就会被调入内存去执行。Shell独立于内核,它是连接内核和应用程序的桥梁,并由输入设备读取命令,再将其转为计算机可以理解的机械码,Linux内核才能执行该命令。
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中的变量,他们是"父子"关系。
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>> 标准错误输出,同上
&> 标准正确输出和标准错误输出,同上