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

专业网站设计的公司wordpress在线转pdf

专业网站设计的公司,wordpress在线转pdf,高等教材建筑电气久久建筑网,做搬家网站的素材目录 前言1. 指令背后的本质2. 环境变量背后的本质3. 环境变量到底是什么4. 命令行参数5. 本地变量 与 内置命令6. 环境变量的相关命令 前言 相信在 it 行业学习或者工作的小伙伴们#xff0c;基本都配置过环境变量#xff08;windows环境下#xff09;#xff0c;如果你也… 目录 前言1. 指令背后的本质2. 环境变量背后的本质3. 环境变量到底是什么4. 命令行参数5. 本地变量 与 内置命令6. 环境变量的相关命令 前言 相信在 it 行业学习或者工作的小伙伴们基本都配置过环境变量windows环境下如果你也不知道你配置的环境变量到底是什么或者说你只会配置环境变量但并不知道它到底是什么不妨看看这篇文章或许可以给你带来新的认识。 这篇文章会先介绍配置环境变量的本质是在干什么然后 通过环境变量的全局属性引出 命令行参数 进而理解环境变量具有全局属性还有简单拓展本地变量与内建命令的区别。 1. 指令背后的本质 小篇之前讲过一篇文章 如何正确看待Linux下的各种命令当时我们就谈论过了所谓 linux 下的各种指令其本质都是一个可执行程序而这些可执行程序指令与我们平常编译 C/C 之后形成的可执行程序有什么区别呢 其实二者没有什么本质区别要说区别其一就是你的没有人家的厉害其二就是你的不能够直接运行而需要指定路径./test)。所以如果你想要你完全可以让你自己写的程序变的跟指令一样的执行。 没错我们确实做到了现在我们自己编写的程序再也不需要通过 ./ 才能运行了。 2. 环境变量背后的本质 echo $PATH // 打印系统中的PATH环境变量 ehco $HOME // 当前用户的工作目录大家有没有想过一个问题当我们 xshell 连接上远端服务器后为什么会自动进入到当前用户的家目录下。凡是都有因果而这件事就是 xshell 中的 bash 进程为我们做的当身份信息验证成功bash 就会自动根据当前用户执行 cd $HOME 这样的指令。 因此不同用户所查看到的 HOME 环境变量也是不一样的。 让我们自己编写的程序 像 指令 一样的运行不仅可以通过将可执行程序拷贝到 /usr/bin 目录下也可以将可执行程序所处目录路径添加到系统中的 PATH 变量中这样同样也可以让我们的程序 像 指令 一样的执行 PATH$PATH:/home/outlier/linux/env 在 PATH 追加路径一定要加上 $PATH: 否则就是直接覆盖原本的 PATH所以环境变量背后的本质是什么----- 我们可以简单理解为当我们将某一个路径配置到 PATH 中那么就可以直接像指令一样的执行 该路径下的所有可执行程序因为系统会自动在 PATH 从左往右依次寻找这些路径下是否有这个可执行程序如果有那么在执行时系统会自动补充该程序所在路径其道理与我们手动指定路径并且执行是一样 但关于环境变量到底是什么这些现象还无法说明。 3. 环境变量到底是什么 echo env 可以查看系统中所有的环境变量 [rootlocalhost ~]# env XDG_SESSION_ID3 HOSTNAMElocalhost.localdomain SHELL/bin/bash TERMxterm HISTSIZE1000 USERroot LS_COLORSrs0:di01;34:ln01;36:mh00:pi40;33:so01;35:do01;35:bd40;33;01:cd40;33;01:or40;31;01:mi01;05;37;41:su37;41: sg30;43:ca30;41:tw30;42:ow34;42:st37;44:ex01;32:*.tar01;31:*.tgz01;31:*.arc01;31:*.arj01;31:*.taz01;31:*.lha01;31:*.lz401;3 1:*.lzh01;31:*.lzma01;31:*.tlz01;31:*.txz01;31:*.tzo01;31:*.t7z01;31:*.zip01;31:*.z01;31:*.Z01;31:*.dz01;31:*.gz01;31:*.lrz01;31 :*.lz01;31:*.lzo01;31:*.xz01;31:*.bz201;31:*.bz01;31:*.tbz01;31:*.tbz201;31:*.tz01;31:*.deb01;31:*.rpm01;31:*.jar01;31:*.war01 ;31:*.ear01;31:*.sar01;31:*.rar01;31:*.alz01;31:*.ace01;31:*.zoo01;31:*.cpio01;31:*.7z01;31:*.rz01;31:*.cab01;31:*.jpg01;35:*.jp eg01;35:*.gif01;35:*.bmp01;35:*.pbm01;35:*.pgm01;35:*.ppm01;35:*.tga01;35:*.xbm01;35:*.xpm01;35:*.tif01;35:*.tiff01;35:*.pn g01;35:*.svg01;35:*.svgz01;35:*.mng01;35:*.pcx01;35:*.mov01;35:*.mpg01;35:*.mpeg01;35:*.m2v01;35:*.mkv01;35:*.webm01; 35:*.ogm01;35:*.mp401;35:*.m4v01;35:*.mp4v01;35:*.vob01;35:*.qt01;35:*.nuv01;35:*.wmv01;35:*.asf01;35:*.rm01;35:*.rmvb0 1;35:*.flc01;35:*.avi01;35:*.fli01;35:*.flv01;35:*.gl01;35:*.dl01;35:*.xcf01;35:*.xwd01;35:*.yuv01;35:*.cgm01;35:*.emf01;35:*.axv 01;35:*.anx01;35:*.ogv01;35:*.ogx01;35:*.aac01;36:*.au01;36:*.flac01;36:*.mid01;36:*.midi01;36:*.mka01;36:*.mp301;36:*.mpc 01;36:*.ogg01;36:*.ra01;36:*.wav01;36:*.axa01;36:*.oga01;36:*.spx01;36:*.xspf01;36: MAIL/var/spool/mail/root PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/node-v14.18.2/bin:/root/bin PWD/root LANGen_US.UTF-8 KDEDIRS/usr HISTCONTROLignoredups SHLVL1 HOME/root LOGNAMEroot XDG_DATA_DIRS/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share LESSOPEN||/usr/bin/lesspipe.sh %s DISPLAYlocalhost:11.0 NODE_HOME/usr/local/node-v14.18.2 XAUTHORITY/root/.xauthYF8InL _/bin/env OLDPATH/home/outlier/linux以上就是我自己系统中所有的环境变量了其中较为重要的有如下 HISTSIZE 就是用来保存历史指令的HISTSIZE1000 就决定了只会保存最近的1000条指令USERroot 则记录当前登录的用户名PWD/root 记录当前用户所处的路径LOGNAMEroot 记录当前登录的用户OLDPATH/home/outlier/linux 记录上一次所处路径这也是为什么执行 cd - 的时候总是可以直接返回上一次路径经过 bash 的解释之后最终其实就是在执行 cd $OLDPATH 这条指令。 刚刚我们是通过系统指令 env 或者 echo 某一个环境变量来获取的下面我要介绍一种在代码层面获取环境变量的方法。 includestdio.h #includestdlib.h int main() {printf(who: %s\n, getenv(USER));printf(PATH: %s\n, getenv(PATH));return 0; } 其中值得关注的是不同用户执行该程序时getenv() 获取的环境变量的值并不相同 这也说明了程序内部是可以通过获取环境变量来得知当前运行该程序是哪个用户。所以当环境变量认识到这一步我们必须要重新认识一下 linux 中的权限问题。 Linux权限的理解与操作 这篇文章过后我们应该要知道权限分两种一种对人一种对物。而今天我们要重新认识对人的权限凭什么一个文件属性上写着拥有者是谁所属组是谁就能决定这个人有没有权限。凭的就是当程序被用户运行时它内部是可以通过 getenv 去获取当前是哪个用户在访问的换言之程序本身就可以决定允许被谁读写执行等操作。 为了让这方面的理解更加直观我们还可以再来一个 demo。 int main() {char who[32] {0};strcpy(who, getenv(USER));if(strcmp(who, root) 0){printf(你是上帝所以你随便玩\n);}else{printf(你是普通用户要受到权限的约束\n);}return 0; }所以环境变量到底是什么 ---- 环境变量是系统提供的一组 namevalue 形式的变量不同的环境变量有不同的用户通常具有全局属性。 那为什么是环境变量具有全局属性呢 4. 命令行参数 在回答上面的问题之前我们需要先讲一下 命令行参数。 简单来说命令行参数就是我们各种命令后面带的选项例如 ls -lls -als -a -l -i 等等ls 后面带的这些选项都叫做命令行参数 而 C/C 程序当中的 main 函数其实也是有参数传递的只不过在 windows 平台下基本不用到而已。 int main(int argc, char* argv[], char* env[]){ int i 0;for(; argv[i]; i){printf(argv[%d]-%s\n, i, argv[i]);}}// 其中的 argv 和 env 就是一个指针数组而 char* 一般所指的就是字符串的起始地址 // 换言之在命令行的一切指令最终都会被 bash 解释成字符串存入到 argv 数组中 // env 则是存储环境变量的数组上述 demo 就很好的验证了argv 这个数组就是在存储我们的指令 以及附带的各个选项 接着为了更好理解 命令行参数 跟我们所谓的 指令选项 有什么关联我们可以来一个 demo int main(int argc, char* argv[], char* env[]) {if(argc ! 2){printf(Usage: %s -[a|b|c|d]\n, argv[0]);return 0;}if(strcmp(argv[1], --help)0){printf(Usage: %s -[a|b|c|d]\n, argv[0]);}else if(strcmp(argv[1], -a) 0){printf(功能1\n);}else if(strcmp(argv[1], -b) 0){printf(功能2\n);}else if(strcmp(argv[1], -c) 0){printf(功能3\n);}else if(strcmp(argv[1], -d) 0){printf(功能4\n);}else{printf(default功能\n);} }所以现在应该能够理解所谓 命令行参数 是在干什么了吧 或者 为什么要设计 命令行参数 ----- 为指令、工具软件等提供命令行选项的支持这样在用户层看到的结果一直都是带上不同的选项我就可以看到不同的运行效果站在开发者的角度我就可以通过设置各种 命令行参数 来实现不同选项不同效果的体现 但是现在有一个问题main 函数当中的参数是谁给传递进来的呢 我们要明白一个因果既然有参数那就势必会有传参这个行为。虽然我们一直在说 main 函数是整个代码程序的入口但我们从来没有说过它不是一个函数既然是函数那就会存在两种行为一种是调用别的函数一种是被别的函数调用。所以既然 main 函数有参数那就说明它一定会被别的函数调用在我们编译代码的时候编译器内部就会有一个 Startup() 这个的函数调用我们的 main()然后对 main 函数做一个传参检查最后编译我们的代码。 而 main 有了传参并且其中一个是用于存储环境变量的数组那么现在我们也可以不通过 getenv 来获取环境变量了可以直接遍历 env[ ] 来获取所有的环境变量getenv() 只能获取指定的一个环境变量。 int main(int argc, char* argv[], char* env[]) {int i 0;for(; env[i]; i){printf(env[%d]-%s\n, i, env[i]);} }并且通过代码层面上对 env 数组遍历出来的结果与 bash 中的 env 指令中获取的环境变量是一模一样的而这恰恰可以说明 环境变量具有全局属性 这件事 我们所有的程序在运行起来后都会转变为进程而这些进程都是 bash 的子进程。而 bash 本身在启动的时候会从操作系统的配置文件中读取环境变量信息子进程会继承父进程bash的环境变量而作为 bash 的子进程在不需要修改环境变量的数据时子进程关于环境变量的数据 与 父进程bash是一模一样的 换言之所有的子进程都会继承 bash 的环境变量而子进程的子进程又会继承其父进程的环境变量这样下来所有的进程都能够获取到环境变量这不就是 环境变量具有全局属性吗 5. 本地变量 与 内置命令 张三我承认小篇你讲的很好但是上面这些我还是不相信环境变量具有全局属性这件事。 所以我们再谈一个话题那就是什么是本地变量什么是内置命令 在本 bash 进程内定义的变量就称为本地变量并且不会被继承---- 如何证明它不会被继承 int main(int argc, char* argv[], char* env[]) {printf(MYVALUE: %s\n, getenv(MYVALUE));我们在 bash 中定义的本地变量我们是可以查看到但是我们自己编写的程序被运行起来就会变为 bash 的子进程而 bash 可以查到本地变量其子进程却不行这不就证明了本地变量不具备全局属性不会被子进程继承反之当我们 export 设置为环境变量之后其子进程是会继承父进程的环境变量的因此我们运行程序之后又发现突然查得到了再次证明环境变量具有全局属性这件事 不过这里有一处疑点。当我们 ehco $MYVALUE 是可以查到本地变量的。之前我们 ps axj 查看进程并且用 grep 命令过滤关键词的时候出来的结果中还有 grep 这个进程当时我们就说grep 在执行的时候bash 同样也会为其创建一个子进程。那这么说执行 echo 的时候同样也会创建子进程在执行啊你刚刚才说的 子进程不会继承本地变量所以获取不到本地变量怎么今天 执行 ehco 创建出来的子进程好像继承了本地变量因为 echo 能够打印这个本地变量 echo 就是我们要说的内建命令 并不是所有的命令都会被创建子进程有些命令是不需要 bash 创建子进程的而是由 bash 亲自执行这类命令大都是 bash 内部自己写的 或者 系统提供的函数我们将这类命令称为 内建命令。 而 cd 命令就是典型的内建命令。怎么证明呢 ----- 当我们在 cd xxx 进入某个路径时如果你说 bash 会为 cd 命令创建子进程然后让子进程去执行这条命令那我们改的应该也是子进程的路径但为什么 bash 中的路径也被更改了呢我们 cd 的时候bash 的命令行一直是实时更新我们当前所处的目录的所以这就说不通了只能说明 cd 是内建命令由 bash 亲自执行并没有创建子进程去执行所以当我们 cd xxx改的当然就是 bash 的路径了。 我们在通过一个 demo 来感受 cd 命令 int main(int argc, char* argv[], char* env[]) {// bash 在执行 cd 命令的时候类似如下判断到是 cd 命令后不创建子进程直接通过 chdir 修改路径if(strcmp(argv[1], cd)0){chdir(argv[1]);}// 模拟 cd 命令调用 chdirsleep(30);printf(path begin changing!\n);if(argc 2){chdir(argv[1]);}printf(path change end!\n the process is sleeping!\n);sleep(30); }cd 命令就是类似如此执行的时候直接调用 chdir 修改路径并不会 frok() 创建子进程。 6. 环境变量的相关命令 echo: 显示某个环境变量值 export: 设置一个新的环境变量 env: 显示所有环境变量 unset: 清除环境变量 set: 显示本地定义的shell变量和环境变量关于环境变量的内容到这里就结束了。 如果感觉该篇文章给你带来了收获可以 点赞 收藏⭐️ 关注➕ 支持一下 感谢各位观看
http://www.tj-hxxt.cn/news/231745.html

相关文章:

  • 网站建设盐城旧金山网站建设
  • 兴仁市建设局网站wordpress主题 欣赏
  • 开发一个手机系统有多难济南正规企业站seo
  • vs网站开发源码网站设计作业
  • 关于手机的网站有哪些内容石家庄专业网站营销
  • 最新免费网站源码昆山做网站的公司有哪些
  • 城乡建设网官方网站wordpress 文章内目录
  • 怎么描述网站主页做的好wordpress前台登录主题
  • 大冶市建设局网站腾讯广告
  • 西安市阎良区建设局网站产品推广运营的公司
  • 网站建设的中期检查表网站建设必须要服务器吗
  • 有哪些企业建设网站潮南最新消息今晚
  • 易无忧建站淘宝店铺运营推广
  • 网站建设制作周期wordpress后台编辑框 自定义按钮
  • 网站备案是怎么回事小米的企业网站建设思路
  • 蓝色风格的网站html5网站开发环境的搭建
  • 如何做网站拉动条网站开发方向学啥
  • 顶尖手机网站建设网站网页设计多少钱
  • 放心的网站设计制作网站正在建设html
  • 建设网站能赚钱电脑网站转换手机网站怎么做
  • 衡水做网站建设公司上海远丰电商网站建设公司怎么样
  • 网站设计网络推广杭州建设网双标化工地2022年
  • 业务推广网站wordpress页面修改
  • 学校网站源码html电子商务网站的后台管理系统
  • 太原网站维护安溪县住房和城乡建设网站
  • 做教育网站wordpress怎么换空间
  • 企业电子商务网站建设规划方案帝国+只做网站地图
  • 网站建设方案预计效果中国网站备案取消
  • 浏览网站内下载文件域名注册的网址
  • 大型门户网站建设功能小程序建站网站