文章目录

  • 一、环境变量
    • 1.1 基本概念
    • 1.2 查看环境变量
    • 1.3 环境变量:PATH
    • 1.4 环境变量:HOME
    • 1.5 和环境变量相关的命令
    • 1.6 通过 C 库函数获取环境变量:getenv
    • 1.7 环境变量 & 本地变量
    • 1.8 命令行参数
      • ① main 函数的参数列表
      • ② 命令行参数的意义
      • ③ 总结
    • 1.9 环境变量的组织方式
      • ① 前言
      • ② 通过 main 的第三个参数获取环境变量
      • ③ 通过全局变量 environ 获取环境变量(了解)

一、环境变量

1.1 基本概念

环境变量我们早已听说过,比如在学习 JAVA 或者 Python 的时候,会在 windows 上配置环境变量:

可环境变量到底是什么呢

  • 环境变量 (environment variables) 一般是指在操作系统中用来指定操作系统运行环境的一些参数

    这些参数通常有特殊的用途。

  • 比如:我们在编写 C/C++ 代码的时候,在链接的时候,我们从来不知道我们所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。

  • 环境变量通常具有某些特殊用途,环境变量在系统当中通常具有全局特性

常见环境变量

  • PATH:(当前用户)指定命令的搜索路径

  • HOME:指定当前用户的主工作目录(即用户登陆到 Linux 系统中时,默认的目录)。

  • SHELL:当前 shell,即当前用户使用的命令行解释器的版本,它的值通常是 /bin/bash。

  • HISTSIZE:命令历史记录保存数量。(centos 6.7 默认是 3000 条)

    命令 history 可以查看所有命令历史记录。搭配管道 history | wc -l 可以查看命令历史记录的行数。


1.2 查看环境变量

  • echo $PATH 命令,PATH 是环境变量的名称,查看指定环境变量。

  • env 命令,查看系统中所有的环境变量。


1.3 环境变量:PATH

思考

  • 我们编写的 C/C++ 代码,编译生成的可执行程序,是不是一个命令呢?—— 是的。

  • 在 Linux 中,任何一个可执行程序,具有可执行权限(x),就称之为它是一条命令。

其实我们听过的:程序、命令、指令、可执行程序等等,其实都是一个概念,是同一个东西。(⭐)

思考

  • 既然是同一个概念,那为什么我们运行 ls 等命令,不用带 ./ 当前路径,而运行我们自己的可执行程序 proc 必须要带 ./proc 当前路径呢?

分析

  • 环境变量 PATH 中保存的是指定命令的搜索路径

  • 因为 ls 等命令是在系统的特定路径下保存起来的。

  • 而我们的 proc 命令没有保存在 PATH 指定的这些路径中,而系统执行命令只会在 PATH 指定的这些路径中搜索,所以系统找不到我们的 proc 命令,就报错了。

思考

那有没有什么办法,可以让可执行程序 proc 不用带 ./ 当前路径就可以直接运行呢?

  • 方法1:把 proc 拷贝到环境变量 PATH 指定的任一路径下。

  • 方法2:把 proc 所在路径添加到环境变量 PATH 中。(注意:我们自己添加的环境变量,系统重启后不会被保存)

    $ PATH=$PATH:/home/ll/xxx/10# :冒号是分隔符
    # 注意:PATH=/home/ll/xxx/10,不能这样写,必须加上$符号,否则会把PATH中所有内容覆盖掉
    

    运行效果图:

    注意

    如果我们不幸把环境变量给覆盖掉了,不用担心,环境变量既然是变量,说明它是可以被赋值的,即在用户登录的时候,通过用户目录下的配置文件赋值的,所以只需要重新登录下就好了。

    比如:家目录下的 .bash_profile 文件,这些文件不建议自己去随意修改:


1.4 环境变量:HOME

分别在 root 和普通用户下执行 cd ~ 和 pwd 查看家目录,分别是 /root/home/ll,为什么不一样呢?

是因为不同用户的家目录中的配置文件不一样,所以不同用户下的环境变量 HOME 也是不一样的:

[ll@VM-0-12-centos ~]$ echo $HOME # 指定用户的主工作目录
/home/ll
[root@VM-0-12-centos ~]$ echo $HOME
/root

1.5 和环境变量相关的命令

  1. echo:显示某个环境变量值。
  2. export:设置一个新的环境变量。
  3. env:显示所有环境变量。
  4. set:显示在本地 shell 内定义的变量和环境变量。(既能查看本地变量,也可以查看环境变量)
  5. unset:清除环境变量。

1.6 通过 C 库函数获取环境变量:getenv

getenv 和 setenv 函数介绍:

#include <stdlib.h>
/*
* name: 环境变量的名称
* 返回值: 环境变量的内容
*/
char *getenv(const char *name); // 获取环境变量int setenv(const char *name, const char *value, int overwrite); // 更改或添加环境变量

【Linux】环境变量和命令行参数相关推荐

  1. Linux环境变量和命令行参数

  2. 环境变量与命令行参数

    文章目录 环境变量与命令行参数 一.环境变量 1.查看环境变量的命令 2.Linux下常见的环境变量 I. PATH II. HOME III. PWD IV. LANG V. SHELL VI. H ...

  3. .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]...

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参 ...

  4. Win32汇编——过程控制(环境变量、命令行参数、可执行文件执行)

    1.环境变量 按用途可分为:与系统运行相关.反应系统状态以及应用程序自定义三种环境变量 操作函数: 获取一个环境变量的值:GetEnvironmentVariable 设置新变量或删除已有变量 :Se ...

  5. Linux环境变量PS1_命令行提示符设置

    PS1是一个Linux终端下的一个环境变量,可以在当前命令提示符上显示所配置的信息. 例如这样: root@G470:~#  或者这样: user1@G470:~$ PS1中可以配置bash识别的转义 ...

  6. linux环境变量 export命令详解

    由host $ export DVSDK="${HOME}/ti-dvsdk_dm368-evm_xx_xx_xx_xx"引发的问题 1.${HOME}:首先, HOME 是个变量 ...

  7. linux shell运行脚本命令行参数,shell脚本命令行参数简介

    之所以用到命令行参数,关键在于shell脚本需要与运行脚本的人员进行交互. bash shell提供了命令行参数添加在命令后面的数据值).命令行选项修改命令行为的单字符值)和直接读取键盘输入. 1.命 ...

  8. Linux下Shell脚本命令行参数:getopt、getopts用法

    目录 简介 getopt 简介 支持选项 用法 getopt optstring parameters getopt [options] [--] getopt [options] -o|--opti ...

  9. 【C/C++】VS的cl命令 | 配置环境变量 | 使用命令行编译C/C++程序

    文章目录 一.前言 二.准备 三.配置环境变量 1. 逐步配置 2. 一步到位 四.语法 更多文章 一.前言 作为一个C++ (C语言) 程序员,VS可谓是编写代码的神器(天下第一IDE!).但是它的 ...

最新文章

  1. Linux 小知识翻译 - 「文件系统的种类」
  2. ubuntu python3.6_在 Ubuntu 16.04 LTS 系统上安装 Python 3.6
  3. 垃圾,还用汇编写单片机程序?
  4. ubunt 下 配置samba 服务器
  5. 的标题形状工具在哪里_自媒体如何搜集素材?标题、文章、图片素材收集3大途径!...
  6. 当年资本家倒掉牛奶,到底是怎么回事?
  7. conda创建和使用python的虚拟环境
  8. 如何使Android应用程序获取系统权限来修改系统时间
  9. opencv成员函数data,step,at的使用
  10. Visual Studio 2010 版本之前的区别
  11. sklearn交叉验证2-【老鱼学sklearn】
  12. Android、netassist进行UDP通信
  13. 系统学Android从零开始,附超全教程文档
  14. k2p华硕系统怎么设置_斐讯K2刷华硕固件教程
  15. 540s inter 固件_Intel SSD Firmware Update Tool(英特尔ssd固件更新工具)下载 v2.1.6官方版...
  16. 企业级数据服务总线规划
  17. java poi ppt转图片
  18. 下载苹果官网视频的方式
  19. php date()时间不对,PHP DATE( )函数与系统时间差8小时解决办法
  20. 水果店从哪里进货便宜,水果店都有哪些进货渠道

热门文章

  1. 【uni-app】Flex布局
  2. idea在创建工程时No SDK的解决方法
  3. error: variable has incomplete type ‘QApplication‘ 错误解决
  4. it之家 materia design 版
  5. idea Translation IP 地址无法访问
  6. Problem C: 农夫果园
  7. HTTP常见报错原因 :401 、403、404、500等
  8. web前端培训班多少钱-web行业未来发展如何
  9. 应届生年薪30万,把员工宠上天?测试员在快手工作究竟是什么样的体验?
  10. POM文件的packing错误