zoukankan      html  css  js  c++  java
  • 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中。

    至此,环境变量的大部分概念都已经介绍完毕。

  • 相关阅读:
    GL_TRIANGLE_FAN Vs GL_TRIANGLE_STRIP
    Color bleeding与caustics概念解析
    Two path ray tracing与Photon Mapping(粒子跟踪)
    右手定则判断法线方向
    正确使用atoi
    深入探讨透视投影坐标变换
    gluBuild2DMipmaps与glTexImage2D与glGenTexture()函数
    OpenGL纹理贴图流程
    int main( int argc, char ** argv)在VS2008中的配置的一个实例
    c++标准库中vector数组遍历时的用法
  • 原文地址:https://www.cnblogs.com/qixianyu/p/6568155.html
Copyright © 2011-2022 走看看