环境变量
为什么系统的命令不需要带路径呢?----->环境变量(PATH)
- 用:当分隔符,而且要查看需要加上$,不加查看不了echo &PATH
常见环境变量
环境变量本质是OS在内存/磁盘文件中开辟的空间,用来保存系统相关数据(简单理解就是变量名+变量内容)
- PATH:指定命令的搜索路径
- HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
- SHELL : 当前Shell,它的值通常是/bin/bash
- 系统上还存在一种变量,是与本次登录(session)有关的变量,只在本次登录有效(本地变量),像之前写的一些脚本就是创建了一个本地变量(例:count=0; while [ $count -le 10]; do echo $count; let count++; done 这就定义了一个本地变量echo $count可以查看值)
和环境变量的相关指令
- echo: 显示某个环境变量或者本地变量值
- 查看本地变量:echo $my_env
- 查看环境变量:echo $PATH
- export: 设置一个新的环境变量 (内存级)
- 将本地变量导成环境变量
- export myval(本地变量名)
- 用法:export PATH=$PATH: /home/xifeng/…(路径)
- 将本地变量导成环境变量
- env: 显示所有环境变量
- unset: 清除环境变量
- 取消本地或者环境变量
- set: 显示本地定义的shell变量(本地变量)和环境变量
- myval(本地变量) 只对本次登录有效
环境变量的获取和操作
首先,先引入几个点:我们知道main函数是可以带参数的,一般是:int main(int argc,char * argv[]),我们可以在命令行上传各种参数------那么为什么要这样传呢?---->同一个程序可以通过带不同的命令行参数来使其执行不同的功能
-
指令有很多选项,用来完成同一个命令的不同子功能,选项底层使用的就是命令行参数!!
-
获取环境变量
-
getenv()获取环境变量(推荐)
-
代码有几种形式
int main() { extern char **environ; for(int i=0;environ[i];i++) { printf("%d-->%s\n",i,environ[i]); } }
-
环境变量通常是具有全局属性的
- 命令行上启动的进程,子进程pid会变,但父进程都是bash(子进程的环境变量都是来自于bash)
- 环境变量具有“全局属性”根本原因是因为环境变量是可以被子进程继承的