【Bash百宝箱】shell内建命令之hash

本文详细介绍了Shell内置命令hash的功能和用法,包括如何搜索和记录命令的完整路径,以及如何管理和清除这些记录。通过具体示例展示了hash命令在实际使用中的效果。

在shell中,内建(builtin)命令hash,格式如下:

hash [-lr] [-p filename] [-dt] [name]

hash命令的作用是在环境变量PATH中搜索命令name的完整路径并记住它,这样以后再次执行相同的命令时,就不必搜索其完整路径了,而且shell每次执行环境变量PATH中的一个命令时,hash都会记住它。当hash不指定任何参数时,显示当前hash列表,包括每个命令的完整路径和执行次数。选项“-l”用于显示当前hash列表中的命令及完整路径等信息。选项“-r”用于清空hash列表。选项“-p filename”用于指定命令name的路径,路径filename是一个文件而非目录。选项“-d”用于从hash列表中移除命令name对应的记录。选项“-t”用于显示hash列表中命令name的完整路径。成功执行时,hash命令的退出状态为0。

如下是hash命令的几个例子(启动一个新的shell终端开始执行):

$ hash
hash: hash table empty
$ hash ls
$ hash top
$ ps > /dev/null
$ uname > /dev/null
$ uname > /dev/null
$ hash
hits    command
   1    /bin/ps
   2    /bin/uname
   0    /bin/ls
   0    /usr/bin/top
$ hash -t ps
/bin/ps
$ hash -d uname
$ hash
hits    command
   2    /bin/ps
   0    /bin/ls
   0    /usr/bin/top
$ hash -l
builtin hash -p /bin/ps ps
builtin hash -p /bin/ls ls
builtin hash -p /usr/bin/top top
$ hash -r
$ hash
hash: hash table empty

我们也可以自定义一个命令,例如“hash -p script_path foo”,命令的名字为foo,对应的shell脚本的完整路径为script_path,然后执行foo命令时,实际执行的就是其对应的shell脚本。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值