概述
Linux登陆主机后,在执行Script之前,其实我们已经处于一个shell中,即Login Shell ,它是将来要执行Script的父shell,如root账号默认为/bin/bash
Linux下每个账号都可以自定义Login Shell,在/etc/passwd文件中,Login Shell定义在第七个字段,如果这个字段不存在,不合法或执行失败,则无法登陆主机
当在执行一个Shell Script时,父Shell会根据Script程序的第一行的 #: 之后指定的shell程雪 来开启一个子shell坏境,然后再子shell中执行此Shell Script,一旦执行完毕,子Shell结束,回到父Shell,不会影响原文父Shell的环境。
执行脚本的三种方式:
1.Source test.sh 或者 . test.sh
在当前Shell环境下读取并执行Script中命令,该Script可以没有权限,没有建立子shell,script里所有新建坏境变量都保存在当前Shell里
2.sh test.sh 或者Bash test.sh
在父Shell下建立一个子shell,在子shell中执行脚本里面的语句,该子Shell继承父Shell的环境变量,但子shell新建的坏境变量不会带回父shell,除非使用export,可以无执行权限
3. chmod +x test.sh && ./test.sh
打开一个子Shell来执行test.sh脚本
1.登陆主机后,打开一个终端,输入echo $SHLVL,输出2.
2.输入bash,进入一个子Shell,然后再输入echo $SHLVL,输出3.
3.输入EXIT,然后再输入echo $SHLVL ,输出2.
4.输入EXIT,退出终端。
最后
以上就是勤劳往事为你收集整理的Shell及 子Shell关系的全部内容,希望文章能够帮你解决Shell及 子Shell关系所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复