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

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

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/238249.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用element-ui进行简单的商品管理

安装element-ui 项目的控制台输入npm i element-ui -S main.js import ElementUI from element-ui;//引入element-ui模块 import element-ui/lib/theme-chalk/index.css;//引入element-ui的css样式 Vue.use(ElementUI);//使用ElementUI 商品管理组件 <template><…

8、Qt中定时器的使用

一、说明 在Qt中常使用如下两种定时器 1、使用QObiect类的定时器事件QTimerEvent 与定时器相关的函数有&#xff1a;startTimer()、timeEvent()、killTimer()&#xff1b;startTimer(int interval)函数开始一个定时器并返回定时器ID&#xff0c;如果不能开始一个定时器&…

家政服务预约小程序系统的开发;

家政服务预约小程序系统的开发&#xff0c;既是对传统加盟服务模式的创新&#xff0c;也是家政商家企业营销推广服务的升级。它推动整个家政服务行业实现线上线下深度融合&#xff0c;提升用户消费体验&#xff0c;实现了雇主、服务提供者、家政企业商家三者之间的无缝衔接&…

go开发之个微机器人的二次开发

简要描述&#xff1a; 下载消息中的语音 请求URL&#xff1a; http://域名地址/getMsgVoice 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型…

【Node.js后端架构:MVC模式】基于expres讲解

Node.js后端架构&#xff1a;MVC模式 什么是MVC MVC (Model-View-Controller) 是一种软件设计模式&#xff0c;用于将应用程序的逻辑分离成三个不同的组件&#xff1a;模型、视图和控制器。 模型&#xff08;Model&#xff09;负责处理应用程序的数据逻辑。它负责从数据库或其…

详解Linux常用命令

目录 1. ps 命令 2. top 命令 3. grep 命令 4. df 命令 5. tail 命令 6. head 命令 7. cat 命令 8. --help 和 man 命令 9. cd 命令 10. mkdir 命令 11. rm 命令 12. mv 和 cp 命令 13. touch 命令 14. vi 或 vim 命令 15. chmod 修改权限 16. 打包和压缩文件 …

Linux 权限管理

1 Linux 安全模型 AAA认证资源分派&#xff1a; 当用户登录时&#xff0c;系统会自动分配令牌 token&#xff0c;包括用户标识和组成员等等信息 1.1 用户 Linux 中每个用户是通过 User ID&#xff08;UID&#xff09;来唯一标识的。 1.2 用户组 Linux 中可以将一个或者多个…

如何通过添加香港高防IP来防御攻击?

​  针对外贸建站&#xff0c;租用香港服务器&#xff0c;除了站长们较为关注的价格外&#xff0c;安全性也是至关重要的。香港服务器在使用中可能会遭受到常见的 DDoS 网络攻击&#xff0c;而在 DDoS 防护这一块&#xff0c;您可以使用香港 DDoS 高防 IP 和香港高防服务器来…

python之logo编程

Logo标志是一种视觉符号&#xff0c;代表着一个品牌、企业或组织的形象。它通常采用图形、字母或字形来代表一个公司或品牌&#xff0c;起到对徽标拥有公司的识别和推广的作用。Logo的设计需要考虑多种因素&#xff0c;例如颜色搭配、字体选择和构图等&#xff0c;以创造出独特…

JDK21无法导入TimeUnit类

运行环境&#xff1a;windows11、IDEA2023.1.3、JDK21 问题描述&#xff1a;IDEA中无法导入java.util.concurrent.TimeUnit类。 以下截图是问题解决后的截图。有问题的时候未截图&#xff0c;说明一下&#xff0c;有问题的时候TimeUnit类是红色的&#xff0c;无法导入&#x…

ChatGPT有什么新奇的使用方式?

2023&#xff0c;ChatGPT几乎席卷了所有行业&#xff0c;并且具有不可测量的巨大潜力等着我们去挖掘。 越来越多人对ChatGPT的应用产生兴趣&#xff0c;知乎上“ChatGPT有什么新奇的使用方式&#xff1f;”这一个热门话题的兴起就是最好的证明。 写作&#xff0c;毫无疑问&…