不同的执行方式,不同的shell环境???
解答:
1.每次调用bash或sh解释器 都会开启一个子shell,因此,不保留当前的shell变量,通过pstree命令检查进程树
2.调用source或者点符号,在当前shell环境加载脚本,因此保留变量
#演示
#####写在前边
name先前定义过值为121212,在hello.sh文件中又定义了name=“wowo~”
(如下图)
#1开启子shell的执行方式
┌──(root㉿kali)-[~]
└─# vim hello.sh
┌──(root㉿kali)-[~]
└─# echo $name
121212
┌──(root㉿kali)-[~]
└─# bash hello.sh
┌──(root㉿kali)-[~]
└─# echo $name
121212
#2.不开启子shell的执行方式
┌──(root㉿kali)-[~]
└─# source hello.sh
┌──(root㉿kali)-[~]
└─# echo $name
wowo~
![](https://i-blog.csdnimg.cn/blog_migrate/f9dd733718ba8ca5cfc84a9b435e2196.png)
shell变量面试题
反引号知识点:
┌──(root㉿kali)-[~]
└─# name=ls
┌──(root㉿kali)-[~]
└─# echo $name
ls #此时ls被识别为一个字符串
┌──(root㉿kali)-[~]
└─# name=`ls` #让ls这个命令执行并且执行的结果交给name
┌──(root㉿kali)-[~]
└─# echo $name
hello.py
hello.sh #将ls的结果存储起来了,并且存储为一个字符串
┌──(root㉿kali)-[~]
└─# ls
hello.py hello.sh
反引号咋打???
键盘左上角Esc键下边内个,一个引号和波浪线的键,英文输入模式下直接按
面试题,输出为什么?
┌──(root㉿kali)-[~]
└─# cat test.sh
user1=`whoami`
┌──(root㉿kali)-[~]
└─# sh test.sh
┌──(root㉿kali)-[~]
└─# echo $user1
┌──(root㉿kali)-[~]
└─#
###执行结果为空