linux环境变量介绍
一 linux环境变量概念的重要性
最初用linux是为了学习机器人操作系统(ros),由于之前没有接触过linux,所以并不了解其中的一些关键概念,导致走了许多弯路,如在ros的安装过程中,没有理解安装教程中的1.6 环境变量建立中的指令的意义,所以导致有时在自己工作空间建立的包会有找不到的情况。因此,本文结合ros安装教程中的部分指令,重点介绍linux环境变量的概念及应用。
二 环境变量的概念
环境变量,就是描述环境的变量。环境就是与shell相关的会话和工作环境,变量就是可变的量。
三 变量的分类及操作
变量分为全局变量和局部变量;
全局变量对shell和shell创建的子进程可见(继承性);
局部变量只对创建它们的shell可见(临时性)。
局部变量可以变为全局变量,供其创建的子进程使用(export);
显示全部环境变量(printenv);
显示所有变量(set)
需要注意的是:这些自己定义的全局变量和局部变量在注销bash时就会失效。
四 PATH环境变量
PATH环境变量决定命令的查找位置和PATH变量中的查找顺序;
为什么是PATH变量中的查找顺序,因为命令运行的顺序是按照以下四个方式查找:
1 以相对/绝对路径执行命令
2 由alias找到该命令
3 bash内置的命令
4 PATH变量中的顺序(如你自己写个shell文件,可以把文件夹的路径加入到其中)
五 环境变量配置文件
系统环境配置文件的作用是让bash启动时可直接读取这些文件,而不需要我们自己定义。
配置文件分为全体系统配置文件和个人用户配置文件。
六 启动shell的不同方式
shell启动方式不同,会启用不同的配置文件。
shell启动方式分为三种:
1 登录shell(默认登录shell):需要输入用户账号和密码的shell
2 非登录shell(交互式shell):不需要输入账号密码的shell
3 运行脚本(非交互shell)
登录shell和非登录shell具体如何调用哪些配置文件,本文不做说明,我们只需要知道都调用了环境配置文件 ~/.bashrc 即可。
七 示例:ros安装教程中环境变量的建立
安装ros的官方教程,我们会发现在建立环境变量时会有给我们三种选择:
第一种:可以在你每次在启动新的shell时自动添加ROS的环境变量
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc
第二种:只是在你当前的shell中添加ROS的环境变量
source /opt/ros/kinetic/setup.bash
第三种:使用的是zsh,而不是bash
echo "source /opt/ros/kinetic/setup.zsh" >> ~/.zshrc source ~/.zshrc
这里我们使用前两种进行说明。
我们上面说过自己定义的全局变量和局部变量在注销bash时就会失效,想让自己定义的变量不失效的办法:写入配置文件
因此,就有了ros中第一种环境变量的建立:
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc source ~/.bashrc
第一行表示把" "中的字符串写入到~/.bashrc中(需要注销再登陆才会生效,>> 表示数据流输出重定向"追加",>表示"替换")
第二行表示把配置文件读入当前的shell中。(立即生效)
所以有ros第二种环境变量建立方法
source /opt/ros/kinetic/setup.bash
把配置文件读取到当前的shell中。
至此,环境变量的大部分概念都已经介绍完毕。