信阳网络推广公司,宁波seo网络优化公司,应用软件开发过程,营口网站seo初识环境变量
目录#xff1a;
什么是环境变量常见的环境变量Linux中与环境变量的有关的命令如何获取环境变量环境变量的特点环境变量的作用 1.什么是环境变量 我们在Linux操作系统下#xff0c;使用指令#xff0c;比如ls,pwd,cd等等#xff0c;可以直接使用#xff0c…初识环境变量
目录
什么是环境变量常见的环境变量Linux中与环境变量的有关的命令如何获取环境变量环境变量的特点环境变量的作用 1.什么是环境变量 我们在Linux操作系统下使用指令比如ls,pwd,cd等等可以直接使用但是我们编译完C/C文件后产生的test可执行程序我们却需要输入./test才能运行我们加了一个路径才让程序跑起来而平时的操作指令却不需要加路径为什么 这是环境变量中的PATH在搞鬼 概念环境变量Environment Variables是操作系统用于存储配置信息的变量这些信息可以影响系统和应用程序的行为。 又比如我们在编译C/C文件时我们并没有输入动/静态库的位置但还是编译成功原因是有相关环境变量帮助编译器进行查找。 2.常见的环境变量
PATH指定操作系统查找可执行文件的目录列表。HOME当前用户的主目录路径。USER当前登录用户的用户名。SHELL默认的命令行解释器shell路径。PWD当前工作目录路径。LANG / LC_ALL设置系统的默认语言和区域影响应用程序的本地化显示。TEMP / TMP系统临时文件存储路径程序可在此创建临时文件。
3.Linux中与环境变量的有关的命令 export 用途设置一个新的环境变量或将一个本地变量变为环境变量使其在当前 shell 会话的子进程中可用。 用法export VAR_NAMEvalue export PATH$PATH:/new/path #在PATH环境变量下新增路径需要带上旧的PATH不然PATH将只有新的路径
export MY_VARHello本地变量是什么 MY_VARHello #不加export此时的MY_VAR就是本地变量
export MY_VARHello #MY_VAR此时是就是临时的环境变量(仅对当前会话有效)echo 用途显示环境变量的值。 用法echo $VAR_NAME echo $PATH
echo $USERenv 用途显示当前 shell 会话中的所有环境变量。也可以用于在临时设置环境变量的情况下执行一个命令。 用法 env # 显示所有环境变量
env VARvalue command # 在特定环境变量设置下执行命令示例 env PATH/tmp ./myprogramprintenv 用途显示指定环境变量的值。如果不指定变量名则显示所有环境变量。 用法 printenv PATH
printenv # 显示所有环境变量set 用途显示所有 shell 变量包括环境变量和本地变量。也可以用来设置本地变量但不默认导出为环境变量。 用法 set # 显示所有变量
set VARvalue # 设置一个本地变量unset 用途删除一个变量环境变量或本地变量。 用法unset VAR_NAME unset MY_VAR 4.如何获取环境变量 使用 Shell 命令获取环境变量 从配置文件中获取 在 Linux 系统中环境变量可以通过读取用户或系统配置文件获取例如 /etc/environment全局环境变量配置文件影响系统中的所有用户。~/.bashrc、~/.bash_profile、~/.profile用户特定的配置文件在用户登录时加载。 在编程语言中获取环境变量这里只讨论C语言 通过系统调用获取–getenv #include stdio.h
#include stdlib.h
int main()
{printf(%s\n, getenv(PATH));return 0;
}命令行第三个参数 #include stdio.h
int main(int argc, char *argv[], char *envp[])
{int i 0;for(; env[i]; i){printf(%s\n, envp[i]);}return 0;
}对于main函数居然有三个参数我是很震惊的因为已经学了一年C/C了才知道。 int argcArgument Count 表示命令行参数的个数包括程序本身的名称。argc 的值至少为 1因为第一个参数是程序的名称。 例如如果运行 ./myprogram arg1 arg2则 argc 的值为 3。 char *argv[]Argument Vector 一个字符串数组包含所有命令行参数。argv[0] 是程序的名称或路径argv[1] 到 argv[argc - 1] 是用户传递的参数。argv 的最后一个元素通常是一个空指针NULL表示参数列表的结束。 在前面的例子中argv[0] 为 ./myprogramargv[1] 为 arg1argv[2] 为 arg2。 char *envp[]Environment Pointer 环境变量的字符串数组通常不常见于标准 C但在某些编译器和系统中支持。每个元素都是一个以等号 分隔的字符串形式为 KEYVALUE。envp 的最后一个元素通常是一个空指针NULL表示环境变量列表的结束。 通过 envp程序可以直接访问调用它时的所有环境变量。需要注意的是使用 envp 的 main 函数通常定义为 int main(int argc, char *argv[], char *envp[])。 通过第三方变量environ获取 #include stdio.h
int main(int argc, char *argv[])
{extern char **environ; //二级指针int i 0;for(; environ[i]; i){printf(%s\n, environ[i]);}return 0;
}environ 是一个特殊的全局变量它指向环境变量的数组。environ没有包含在任何头文件中,所以在使用时 要用extern声明。在 Linux 和 Unix 系统中environ 数组的最后一个元素为 NULL表示环境变量列表的结束。
5.环境变量的特点 继承性父进程可以将其环境变量传递给子进程子进程会继承父进程的环境变量副本。 本地变量没有继承性 临时性在命令行会话中设置的环境变量仅对当前会话有效。永久更改环境变量需要将其添加到系统或用户的环境配置文件中如 .bashrc、.profile 或 Windows 系统变量设置。 大小写敏感在 Linux 和 Unix 系统中环境变量名称区分大小写而在 Windows 中则不区分大小写。
6.环境变量的作用 配置应用程序许多应用程序通过读取环境变量获取其配置参数比如数据库连接信息、API 密钥、以及调试模式等设置。 设置系统路径环境变量 PATH 列出操作系统查找可执行程序的目录路径。系统在运行命令时会按照 PATH 中定义的目录顺序查找对应的可执行文件。 意味着当我们将test加入到的绝对路径加入到PATH后那么我们就可以直接使用test指令。 用户信息与系统设置环境变量还存储当前用户的相关信息如 HOME、USER 等以及系统的临时目录路径如 TEMP、TMP。 传递配置信息环境变量为父进程向子进程传递配置信息提供了一个简便的方式。在运行进程时操作系统会将当前环境变量复制到该进程中使进程能直接读取这些变量。 在使用 gcc 编译程序时环境变量主要起到配置应用程序和设置系统路径的作用。