当前位置: 首页 > news >正文

郑州专业手机网站制作品牌推广部

郑州专业手机网站制作,品牌推广部,百度推广网站可以链接到同公司另一个网站吗,海南澄迈住房与建设厅网站Linux环境变量与命令行参数 一.命令行参数1.语法2.应用1:简易计算器 二.环境变量1.环境变量的概念2.环境变量的作用3.进一步理解环境变量的作用4.常见环境变量5.导出环境变量(添加环境变量)6.环境变量的特性7.另一种获取环境变量的方式8.小功能:用于身份验证的代码9.补充:第三种… Linux环境变量与命令行参数 一.命令行参数1.语法2.应用1:简易计算器 二.环境变量1.环境变量的概念2.环境变量的作用3.进一步理解环境变量的作用4.常见环境变量5.导出环境变量(添加环境变量)6.环境变量的特性7.另一种获取环境变量的方式8.小功能:用于身份验证的代码9.补充:第三种获取环境变量的方式1.environ 10.本地变量1.本地变量的基本操作1.创建本地变量2.验证本地变量的特性3.移除本地变量 11.环境变量是如何发挥作用的? 学习命令行参数对我们学习环境变量有很好地帮助 而且学习命令行参数能够让我们对于Linux操作系统和main函数有更加深刻的理解 一.命令行参数 命令行参数是Linux指令选项的基础 很多语言都支持这个功能, 因为它的作用是让同一个程序能够实现不同的子功能 作用很棒 正是因为有命令行参数这个语法的存在,才有了 ls -a ls -l ls -d ls -n gcc -E/S/c -o -g -static 等等这些指令的选项!!! 那么下面就让我们进入到命令行参数和环境变量的探索当中吧! 1.语法 大家可能见过main函数一个版本是有多个形参的 就像这样 int main(int argc,char* argv[]); argc是int类型的变量 argv是一个指针数组,只不过传参时因为数组降维而让argv这个形参成为了二级指针 不过无妨,我们依然可以把它当成一个指针数组来遍历这个指针数组中存放的是char*类型的指针 这些指针指向的是字符串,因此用%s来打印即可这两个东西到底是什么呢? 下面我们打印一下看一看 argv[0]就是我们输入的./mycmd这个字符串 其实我也可以这样来输入: 也就是说这个argv存放的就是我们在命令行中执行这个可执行程序时所输入的字符串 argc就是这个argv数组的有效数据的个数 其实这个argv是以NULL指针结尾的 我们来验证一下 因为NULL的字面值就是0,因此可以这样来验证 成功运行 这个就是命令行参数的语法 那么有什么用呢? 下面我们就来看一下这个用途 2.应用1:简易计算器 实现一个可以带选项执行不同功能的简易计算器 这里我们需要用到一个函数:atoi 用来将字符串转为整数 成功运行 这也就是Linux中指令选项的实现方式 二.环境变量 1.环境变量的概念 2.环境变量的作用 我们知道: 执行一个程序必须要先找到这个程序 才能创建进程,形成PCB,加载到内存,映射地址空间,添加到运行队列当中 然后就能运行了 但是有一个问题: 为什么我们自己的程序必须要./(告诉系统我这个程序在这个路径下)呢 为什么系统指令就不用告诉系统它在哪个路径下呢? 因为: 系统中有一个全局环境变量PATH 执行程序时,操作系统会先到PATH所保存的路径当中查找该指令 找到了就可以执行,找不到就需要我们自己提供路径,否则就会:command not found 而我们的可执行程序的路径大多数情况下是不在PATH中的 echo $环境变量 查看环境变量的内容 echo $PATH 显示出来的路径是以:作为分隔符的我们来看一下这个PATH的值是什么 我又新建一个目录process3 在里面写了一个code.c 3.进一步理解环境变量的作用 如果我想让自己的可执行程序不用加./就能跑呢? 方法1:拷贝到usr/bin下(不建议) 这个拷贝的过程就相当于把我们自己的指令/软件安装到系统当中 方法2:添加环境变量 PATH我们的可执行程序的路径:$PATH注意: 最后的:$PATH一定不能忘掉!!! 否则PATH直接全改了 如果真的改了 怎么办呢? 直接关掉,重新登陆,就没事了 因为我们改的是在内存当中改的,磁盘当中没有改 每次重新登录的时候环境变量会重新初始化的 下面我们就来演示一下第二种方式 试想一下: 如果没有PATH呢? 下面我把PATH直接清空 此时我 直接使用ls,clear,mkdir,touch都没法执行 但是pwd却可以执行(为什么呢?我们下面就会说明) 但是大多数指令都无法直接输入指令名称来运行了 此时我只能指定路径名称来运行 那是不是太不方便了 因此我们就能知道PATH的作用了 可见环境变量是非常重要的!! 4.常见环境变量 env 作用:查看环境变量echo $PWD 因此pwd这个命令实际是通过读取环境变量得到的 因此我们刚才把PATH置空导致很多命令都无效的时候 pwd却可以正常运行echo $USER 记录用户名 whoamiecho $HOME 记录当前用户的家目录 cd ~ echo $SHELL 记录当前用户所用的命令行解释器 默认为 /bin/bash登陆的时候,操作系统就会把当前用户相关的环境变量加载到内存的 系统通过环境变量就能认识你 (类似于公司的工牌) 也正是因为这些环境变量 所以我们在刚登陆Xshell之后,就会自动进入我们的家目录 并且系统也能知道我们的用户名是wzs 而且它也能随时知道我们当前所处的路径(pwd) 5.导出环境变量(添加环境变量) export AGE20 比方说我们就在这里添加一个环境变量AGE,让它的值定义为20 env不过 让我退出Xshell再次登陆之后,刚才添加的AGE这个环境变量就会消失了 因为我们改的是在内存当中改的,磁盘当中没有改 每次重新登录的时候环境变量会重新初始化的 6.环境变量的特性 其实,我们的main函数还有一个参数: int main(int argc,char* argv[],char* env[]);env这个数组当中存放的就是 指向环境变量的字符串的指针我们也可以来查看一下所有的环境变量 env[i]也是以NULL结尾注意: 1.系统会把环境变量以main函数的参数传入的 跟刚才使用env命令查看所有的环境变量是一样的 2.环境变量是可以被子进程继承下去的(也就是说环境变量是全局的) 其实我们所写的所有进程都是子进程, 因为它们(不包括由我们所写的进程所创建的进程)的父进程都是bash 也就是说bash就是把它的环境变量通过main函数传参给了我们所写的进程 下面我们来使用fork(创建子进程)验证一下 只让子进程打印env 成功继承 可是 这种获取环境变量的方式获取的也太多了吧 看着好乱啊 能不能可以只获取指定的环境变量呢? 当然可以啦 7.另一种获取环境变量的方式 getenv函数:获取指定的环境变量下面我们来演示一下 成功获取当前运行这个mycmd的用户的名称 下面我切换为zs,来看一下会打印出zs来吗? 同理,对于root来说也是如此 8.小功能:用于身份验证的代码 下面我们就可以根据这个用户名这个环境变量来写一份代码了 这个代码的功能是 让别人无法执行我这个mycmd 一个身份验证的代码 我切换回wzs,开始写代码 只有wzs这个用户才可以执行这个程序 其他用户执行这个程序就会强制退出 1.wzs可以执行: 2.zs无法执行: 尽管zs作为other还有x权限,但是zs也无法执行我这个程序 3.root无法执行: 你以为这个代码只能管得了zs? 错了,root想执行也执行不了 可见这个环境变量的确很有用哦 9.补充:第三种获取环境变量的方式 1.environ 成功显示 只需要注意使用时要先用extern来声明 10.本地变量 本地变量区分于环境变量 本地变量是不会被子进程继承的,只在bash内部有效的变量 下面我们来看一下本地变量的基本操作 1.本地变量的基本操作 1.创建本地变量 其实方法很简单,比方说我现在想要创建一个本地变量 myname,赋值为wzs 只需要在命令行中输入: mynamewzs可见,myname这个本地变量创建成功 的确在bash内部是有效的 2.验证本地变量的特性 你不是说本地变量并不会被子进程继承吗 那么现在这个本地变量myname是在bash中的 只要我创建一个进程,查看它的环境变量当中是否有myname不就行了吗? 因此,我们来查看一下 如果有myname这个环境变量,那么就会打印 myname is … 否则打印myname not found 可见,本地变量的确是不会被子进程继承的 3.移除本地变量 无论是本地变量还是环境变量都可以这样移除 unset 本地变量名或者是环境变量名下面我来移除一下myname unset myname移除成功 11.环境变量是如何发挥作用的? 我们所创建的进程中的这些环境变量都来自于它们的祖先(bash这个进程), 因此,只需要bash这个进程有这些环境变量,呢吗环境变量就可以被所有的进程所继承下去,因此就能发挥作用了 但是: 每当我们登录Xshell的时候 系统会给我们分配一个bash 而我们的环境变量就在bash当中 但是bash中的环境变量是在哪里拿的呢? 是从磁盘中的某些脚本文件或者配置文件中来的 每次启动时都会从磁盘的文件中加载到内存当中 这样就可以给bash了 其中有几个文件就是 ~/.bash_profile ~/.bashrc /etc/bashrc 分别是当前用户家目录下的.bash_profile .bashrc 还有/etc目录下的bashrc等等文件 下面我们来简单的看一下即可 注意:一定不要乱修改这些配置文件,否则会出现比较严重的问题 家目录下的.bash_profile 这里就是导入PATH这个环境变量的配置文件 家目录下的.bashrc 这个是因为我之前给wzs用户自动化配置过vim,因此改了一些配置文件 etc目录下的.bashrc 我们只需要知道bash当中的环境变量是从配置文件或者脚本文件中读取的即可 以上就是Linux环境变量与命令行参数的全部内容,希望能对大家有所帮助
http://wiki.neutronadmin.com/news/303047/

相关文章:

  • 网站建设中的服务器搭建方式宣传策划方案
  • html嵌入网站高科技公司网站模板
  • c 网站开发中间层怎么写帝国网站源码手机
  • 专门做产品推广ppt的网站深圳注册公司需要租赁凭证吗
  • 开一个网站需要什么企业融资风险及其防范措施
  • 网站如何做竟价可以做科学模拟实验的网站
  • 做企业竞争模拟的网站wordpress安装主题主机名
  • 商城网站设计制作谷歌有趣的网站
  • 承德网站制作公司江西省seo
  • 安徽省建设干部网站网站建设与管理答案
  • 开发商城网站建设永久免费做网站
  • 怎样将自己做的网站发布到外网上ppt模板大全免费下载网站
  • 网站外链代发网站推广妙招
  • 做网站和做app哪个容易三只松鼠广告策划书
  • 深圳企业公司做网站虚拟主机可以做视频网站嘛
  • 五星酒店网站建设方案威海做网站公司
  • 网站多久才能做起来百度竞价 百度流量 网站权重
  • 制作一号店网站烟台市住房和城乡建设局网站
  • 宝塔面板做网站绑定域名wordpress搜索 文章
  • 网站首页广告图片伸缩代码又关闭做网站用什么软件设计好
  • 开一家网络公司做网站前景如何雄安专业网站建设电话
  • 网站设计参考常州微网站建设
  • 网站建设的7种流程贵州网站制作哪家好
  • 公司经营范围 网站开发wordpress图片简码
  • 网站商城制作费用市场营销策划
  • 前端网站搜索导航怎么做怎样注册网店开网店
  • 网站小视频怎么做代理商益阳网络推广
  • 手机网站制作设计广州网站优化指导
  • 自驾游网站建设方案哈尔滨cms网站建设
  • 整站优化系统网站h1标签用在哪里