另外,在开启一个shell进程中,有一些参数的值也会影响到配置文件的加载。如--rcfile ,--norc等。这些参数的含义值可以使用man bash进一步了解。只要保持默认值,其实就是我们上面介绍的配置文件加载顺序。
还有,在发行版的Linux系统中,Interactive&Login模式下的~/.bash_profile,
~/.bash_login, ~/.profile并不一定是三选一,看一下这三个脚本的内容会发现他们会继续调用下一个它想调用的配置文件,这样就可以避免配置项可能需要在不同的配置文件多次配置的弊端了。如centos7.2 中 ~/.bash_profile文件中实际调用了 ~/.bashrc文件。
按照模式和参数设置启动的shell程序的配置文件加载流程图如下:
好了,到目前我们总算把环境变量中配置文件的加载顺序理清了。下面列举一些常用的Shell环境变量吧。
系统变量
Shell中系统变量主要在对参数判断和命令返回值判断时使用,包括脚本和函数的参数和返回值判断。没啥可说的,主要难记且脚本中经常出现:
用户自定义的变量
是指我们在使用命令或脚本时定义的变量,因为shell是弱类型语言且语法XX,这里主要谈谈初学时的几个坑爹点:
“=” 左右两边不能有空格
你懂我说的意思了吧。。
引用
所谓引用,指的是将字符串用引用符号包括起来,以防止其中的特殊符号被Shell解释为其他涵义。
常用的引用符号如下:
$
前面我们其实一直在用 “ 变量名 ” 来表示某个 变量名的值,这其实也正是 的作用。
shell中变量名的大小写是敏感的
好了就这么多吧。
条件测试的表达
shell脚本中除了变量,还经常出现的语法就是条件测试的判断。不会写脚本的开发小姐姐不是好运维,我们来一起侃侃吧。
基本语法
在Shell程序中,当指定的条件为真时,整个条件测试的返回值为 0;反之,如果指定的条件为假时,整个条件测试的返回值为 非0。
条件测试表达式的书写有test expression 和 [ expression ]两种形式,注意后者的空格一定不能省!!
脚本中经常出现的有字符串测试、整数测试、文件测试、逻辑操作符测试。我们一起看下:)
字符串测试
注意:这里运算符 左右两边又一定要有空格了(下同),这样shell才能将之当成命令执行。
整数测试
文件测试
逻辑操作符测试
收藏在看转发起来,小姐姐就算你条件测试过关了>_<
感谢大佬这么优秀还关注我~
参考资料:
[1].《Shell从入门到精通》
[2].https://www.edureka.co/blog/types-of-shells-in-linux/
[3].
[4].https://apple.stackexchange.com/questions/361870/what-are-the-practical-differences-between-bash-and-zsh
[5].https://sunlightmedia.org/bash-vs-zsh/
[6].https://unix.stackexchange.com/questions/439042/debian-read-order-of-bash-session-configuration-files-inconsistent
[7].https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html
[8].
[9].https://shreevatsa.wordpress.com/2008/03/30/zshbash-startup-files-loading-order-bashrc-zshrc-etc/