Linux系统:环境
总阅读次
2016-4-21周四
天气:晴朗
环境变量与文件查找
- 变量
Shell变量,所谓变量就是计算机中用于记录一个值(不一定是数值,也可以是字符或字符串)的符号,而这些符号将用于不同的运算处理中。通常变量与值是一对一的关系
,可以通过表达式读取它的值赋值给其它变量,也可以直接指定数值赋值给任意变量。
为了便于运算和处理,大部分的编程语言会区分变量的类型,用于分别记录数值、字符或者字符串等等数据类型。Shell 中的变量也基本如此,有不同类型(但不用专门指定类型名),可以参与运算,有作用域限定。
变量的作用域即变量的有效范围(比如一个函数中、一个源文件中或者全局范围),在该范围内只能有一个同名变量。一旦离开则该变量无效,如同不存在这个变量一般。
实例:
使用declare
命令创建一个变量名为 tmp 的变量
其实也可以不用 declare 预声明一个变量,直接即用即创建,这里只是告诉你 declare 的作用,这在创建其它指定类型的变量(如数组)时会用到
1 | root@ubuntu:~# declare tmp |
读取变量的值,使用
echo
命令和$
符号
- 环境变量
境变量就是作用域比自定义变量要大,如Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,处理创建过程中明确指定的话,它将继承其父进程
的绝大部分环境设置。Shell 程序也作为一个进程运行在操作系统之上,而我们在 Shell中运行的大部分命令都将以 Shell 的子进程的方式运行。
通常涉及到的环境变量有三种:
一:当前Shell进程私有用户自定义变量,如上面我们创建的temp变量,只在当前Shell中有效
二:Shell本身内建的变量
三:从自定义变量到处的环境变量。
也有三个与上述三种环境变量相关的命令,set
,env
,export
。这三个命令很相似,都可以用于打印相关环境变量,区别在于涉及的是不同范围的环境变量,详见下表:
命令 | 说明 |
---|---|
set |
显示当前Shell所有环境变量,包括其内建环境变量(与Shell外观等相关),用户自定义变量及导出的环境变量 |
env |
显示当前用户相关的环境变量,还可以让命令在指定环境中运行 |
export |
显示从Shell中导出成环境变量的变量,也能通过自定义变量到处为环境变量 |
实际操作:
1 | root@ubuntu:~# temp=takethat |
_GNU_SOURCE
可以访问低级函数(所以移植性不好)、传统函数、破坏POSIC函数,所以移植性不好;
~/.config/Code/User/settings.json
1 | { |
"C_Cpp.default.defines": ["_GNU_SOURCE]
这句才能跳转到C语言定义,不然vscode无法跳转到定;