linux bash变量作用域

本文详细探讨了Linux Bash的变量作用域,包括本地变量、环境变量和只读变量,以及它们在不同shell进程中的应用。此外,还介绍了Bash的hash机制,用于提高命令查找效率,并讲解了如何清除hash缓存。最后,提到了shell脚本的执行、配置文件及其加载顺序。
摘要由CSDN通过智能技术生成

linux bash变量作用域

一,思考一个问题,当在shell里执行某个程序时,shell是怎么找到这个程序的?
shell会去$PATH环境变量定义的目录里去找这个命令。环境变量里一般包括/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin这么多目录,这些目录下又有上千个程序,从这么多目录里的,这么多程序里查找肯定是花费时间的。shell为了提高查找效率,使用了缓存机制,这个机制叫hash。。

有了hash缓存后,shell先去hash里查找,如果找到了,就使用;如果没有找到,才去$PATH环境变量定义的目录里去找,找到后,把命令的路劲加程序名放入hash中。

注意:如果是shell的buildin命令,不会放入hash。

hash命令用法:

查看hash里都缓存了哪些程序:hash

hits:代表此命令,被命中了几次。

hash

hits command
1 /usr/bin/cat
2 /usr/bin/ls
详细查看hash里都缓存了哪些程序:hash -l

hash -l

builtin hash -p /usr/bin/cat cat
builtin hash -p /usr/bin/ls ls
清除某个缓存:hash -d cat

hash -d cat

hash

hits command
2 /usr/bin/ls
清除所有缓存:hash -r

hash -r

hash

hash: hash table empty
为什么还要清除缓存?理由:当把命令移动到别的目录后,用原来的缓存就找不到命令了,shell会报出错误,所有要清除。

二,bash变量的作用域
shell进程的子孙进程。

在shell进程里又启动了别的shell进程,下面的例子是在bash里又启动了一个bash,让后在新启动的bash里,又启动了一个csh。

pstree

systemd─┬
├─sshd───sshd───bash───ps

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值