=========================================================================
个人主页点击直达:小白不是程序媛
Linux专栏:Linux系统化学习
代码仓库:Gitee
=========================================================================
目录
命令行参数
环境变量
PATH
查看PATH
$PWD
查看环境变量PWD
$HOME
查看系统支持的环境变量
获取环境变量
命令行参数
在C/C++编程语言中我们有一个main主函数,在刚开始接触C语言时我们会发现这个主函数其实是有参数的,我们不妨在Linux系统中将其中两个参数使用起来看看其运行结果。
1 #include<stdio.h>2 int main(int argc, char*argv[])3 {4 int i=0;5 for(i=0;i<argc;i++)6 {7 printf("%d %s\n",i,argv[i]); 8 }9 return 0;10 }
怎么会是这样的输出?我们再试试
好像有点眉头了,这里的第一个参数代表着shell命令行中我们以空格为间隔的字符串的个数,即为我们第二个字符串数组的参数,第二个字符数组参数代表我们以空格为间隔的每个字符串。
这样我么就可以联想到我们在Linux下执行的各种命令
自己的命令创建文件命令
1 #include<stdlib.h>2 #include<stdio.h>3 int main(int argc, char*argv[])4 {5 if(argc!=2)6 {7 printf("touch:miss file operand");8 }9 FILE* fp=fopen(argv[1],"w"); 10 if(fp!=NULL)11 fclose(fp);12 return 0;13 }
命令行参数可以支持各种指令级别的命令行选项的设置
环境变量
- 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
- 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
- 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性
为什么我的命令要带 . / 呢?
执行一个命令先要找到一个对应的可执行程序, . / 代表当前路径。
PATH
在执行一些系统命令时候我们可以直接执行,也可以使用路径执行。
可以直接执行系统命令是因为我们PATH环境变量记录着我们命令所在的路径,因此我们可以不用输入路径。
查看PATH
echo $PATH
在PATH追加自己命令的路径
PATH= $PATH:路径
我们也可以之间把自己可执行程序的路径拷贝到PATH的路径下,这就是安装程序;将自己程序的路径从PATH中删除就是程序的卸载。
注意:
自己误操作修改了PATH中的所有内容不要慌张重新登入服务器就好了。
$PWD
当你输入pwd命令显示当前路径时,你当前所在路径是保存在PWD环境变量里的;
查看环境变量PWD
echo $PWD
$HOME
在我们的服务器中分普通用户和root用户,普通用户和root用户最大的区别就是权限和家目录的不同,在前面的文章我们已经介绍了权限的区别;今天我们来看看家目录的区别。
- root用户的家目录为:/root
- 普通用户的家目录为:/home/XXX
系统是如何做到区分root用户和普通用户的呢?
在我们登入我们的服务器时需要输入用户名和密码,服务器进行认证形成各种环境变量,此时根据用户名初始化环境变量HOME,登入上去服务器进入(cd $HOME)用户对应的家目录。
查看系统支持的环境变量
我们可以使用指令对Linux系统的环境变量进行查看。
env
获取环境变量
我们也可以使用函数对环境变量进行获取完成一些操作。
getenv("环境变量名称")
获取USER环境变量区别限制root用户和普通用户。
1 #include<stdlib.h>2 #include<stdio.h>3 #include<string.h>4 int main(int argc, char*argv[]) 5 {6 char * name = getenv("USER");7 if(strcmp(name,"root")==0)8 {9 printf("%s:合法用户\n",name);10 printf("I'm root!!!\n");11 }12 else13 {14 printf("%s:非法用户\n",name);15 exit(-1);16 }17 return 0;18 }
今天对Linux下进命令行参数和环境变量分享到这就结束了,希望大家读完后有很大的收获,也可以在评论区点评文章中的内容和分享自己的看法。您三连的支持就是我前进的动力,感谢大家的支持!!!