环境变量
环境变量是具有特殊名字的一个特定对象,包含了一个或多个应用程序运行所需的信息。(例如PATH,可执行程序的搜索路径,当要求系统运行一个程序,而没告诉系统它的具体路径时,系统就要在PTAH值的路径中寻找此程序,找到去执行)简单说,就是指定一个目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件。
分类
环境变量不仅有PATH,系统的环境变量还有:
C_INCLUDE_PATH 头文件的搜索路径
LIBRARY_PATH静态库搜索路径(编译时包含)
LD_LIBRARY_PATH动态库搜索路径(链接时包含)
环境变量可以分成用户自定义的环境变量和系统级别的环境变量。
- 用户级别环境变量定义文件:~/.bashrc、~/.profile(部分系统为:~/.bash_profile)
- 系统级别环境变量定义文件:/etc/bashrc、/etc/profile(部分系统为:/etc/bash_profile)、/etc/environment
另外在用户环境变量中,系统会首先读取 ~/.bash_profile(或者 ~/.profile)文件,如果没有该文件则读取 ~/.bash_login,根据这些文件中内容再去读取 ~/.bashrc。
查看环境变量
- 使用echo命令查看单个环境变量。例如:
echo $PATH
- 使用env查看所有环境变量。例如:
env
- 使用set查看所有本地定义的环境变量。
设置环境变量
- 永久的:需要修改配置文件,变量永久生效。对所有的用户的都起作用的环境变量。
修改 /etc/profile 文件,如果你的计算机仅仅作为开发使用时推存使用这种方法,因为所有用户的shell都有权使用这个环境变量,可能会给系统带来安全性问题。这里是针对所有的用户的,所有的shell
vi /etc/profile # 在 /etc/profile 的最下面添加: export PATH="$PATH:/NEW_PATH"
使用相同的用户打开新的终端时或者手动source ~/.bash_profile生效。
- 临时的:使用export命令声明即可,变量在关闭shell时失效。只对当前的shell 起作用的环境变量。
在控制台中设置,他只对当前的shell 起作用,关闭shell或使用其他shell是无效的:
直接控制台中输入 :
$PATH="$PATH":/NEW_PATH (关闭shell Path会还原为原来的path)
设置后会立即生效,且仅对当前用户有效,当前终端有效,当窗口关闭后无效。
- 指定用户的:修改bashrc文件。针对当前特定的用户起作用的环境变量。
vi ~/.bashrc # 在下面添加 Export PATH="$PATH:/NEW_PATH"
使用相同的用户打开新的终端时或者手动执行source ~/.bashrc后生效,且仅对当前用户有效。
程序运行
如果程序设置了环境变量,则直接输入程序名便可以运行
如果程序未设置环境变量,但是在当前路径下,运行时需要在前面添加 ./ 表示当前路径,例如:./python3
如果程序未设置环境变量,可以使用全路径进行运行,例如:/xx/xx/xx
常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL 当前用户Shell类型
LANGUGE 语言相关的环境变量,多语言可以修改此环境变量
MAIL 当前用户的邮件存放目录
PS1 基本提示符,对于root用户是#,对于普通用户是$