bash shell的学习路程(二)

环境变量的功能:主文件夹的变换、提示符的显示、执行文件查找的路径等!

询环境变量:env命令--->enviorment

关注点:HOME、SHELL、HISTSIZE、MAIL、PATH(冒号隔开)、LANG、RANDOM(随机数生成器--->[0,327667]的自然数)

需求1:除了查询bash中的环境变量(小写),以及操作接口有关的变量(大写),还有用户自定义的变量(小写)?--->set 命令

set命令中几个重要变量(非环境变量)的解释

(1)PS1:命令提示符的设置---->当每次按下[Enter]按键去执行某个命令时,要显示提示符的时候就会主动读取此变量的值!

常见的:[\u@\h \W]\$------->[kiosk@foundation10 ~]$----->详见306页!

(2)$:代表目前这个shell的线程代号---->PID------>echo $$

(3)上一个执行命令回传码,---->一般来说执行命令的时候都会回传一个执行后的回传码,成功返回0错误非0

需求2:将自定义变量转换成环境变量----->语法: export 变量名称------>就可以让该变量继续存在于子进程中!

思考:自定义变量和环境变量的差异是什么?

差异点:该变量是否能被子进程所继续引用

子进程:登录Linux,读取/etc/passwd获取当前用户默认的bash,此时是一个独立的进程,被称为PID----->在此bash下执行某个命令都是由这个bash衍生出来的,那些被执行的命令就是子进程!

子进程的特点:子进程只会继承父进程的环境变量,不会继承父进程的自定义变量!

应用场景:在引用自己的变量设置给后来调用的文件或其他程序!

具体主控文件后面调用其它附属文件(类似函数的功能),但是主控文件与附属文件都有相同的变量名称,解决办法:原本的第一个文件中设置export变量,后面调用的变量就可以使用这个变量了,非常适合于shell scripts

补充1:export 不接变量名称----->列出所有的环境变量

补充2:环境变量转成自定义变量---->declare

---------------------------------------------------------------------

查询Linux支持的语系:locale -a

查看语系变量:locale----->重点关注LANG

Linux的终端机接口(tty1~tty6)--->黑窗口--->如果设置LANG=zh_TW.big5设置生效后,用man 或者其它信息输出时会有乱码!

原因:终端机接口的环境没有中文的编码能力,所以会产生乱码!但是Windows主机中以远程连接服务器的软件连接到主机,命令行的界面是可以看到中文的,所以此时要在LANG设置中文编码!

语系文件的位置:/usr/lib/locale/这个目录中

-----------------------------------

变量的有效范围

前提:export命令就存在变量范围的概念!--->环境变量和自定义变量的作用域

问题3:环境变量的数据为什么可以被子进程所引用?

内存配置问题

--->启动一个shell------>操作系统分配一个记忆块(内存空间)给shell使用,此内存中的变量可让子进程取用

--->父进程利用export功能,可以让自定义的变量内容写入到此记忆块中,作为环境变量(是临时的吗?);

--->当加载一个shell的时候(离开父进程,启动子进程),子进程会将父shell中的环境变量所在的记忆块导入到自己的环境变量中!

--->让变量在相关进程之间存在,更方便的操作环境!

猜你喜欢

转载自blog.csdn.net/wzj_110/article/details/82874709