【Linux系统化学习】揭秘 命令行参数 | 环境变量

=========================================================================

个人主页点击直达:小白不是程序媛

Linux专栏:Linux系统化学习

代码仓库:Gitee

=========================================================================

目录

命令行参数

环境变量

PATH

查看PATH

[PWD](#PWD)

查看环境变量PWD

[HOME](#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     else
   13     {
   14         printf("%s:非法用户\n",name);
   15            exit(-1);
   16     }
   17        return 0;
   18 }

今天对Linux下进命令行参数和环境变量分享到这就结束了,希望大家读完后有很大的收获,也可以在评论区点评文章中的内容和分享自己的看法。您三连的支持就是我前进的动力,感谢大家的支持!!!

相关推荐
Youkiup7 分钟前
【linux 常用命令】
linux·运维·服务器
qq_2975046111 分钟前
【解决】Linux更新系统内核后Nvidia-smi has failed...
linux·运维·服务器
_oP_i16 分钟前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
weixin_4373982124 分钟前
Linux扩展——shell编程
linux·运维·服务器·bash
小燚~26 分钟前
ubuntu开机进入initramfs状态
linux·运维·ubuntu
小林熬夜学编程33 分钟前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
炫彩@之星37 分钟前
Windows和Linux安全配置和加固
linux·windows·安全·系统安全配置和加固
上海运维Q先生38 分钟前
面试题整理15----K8s常见的网络插件有哪些
运维·网络·kubernetes
hhhhhhh_hhhhhh_1 小时前
ubuntu18.04连接不上网络问题
linux·运维·ubuntu
冷心笑看丽美人1 小时前
探秘 DNS 服务器:揭开域名解析的神秘面纱
linux·运维·服务器·dns