hash

原创
2014/09/01 17:02
阅读数 81

    hash是一个bash的内置命令,hash table是一个bash的一种机制,将bash的执行结果缓存到内存中,用于防止执行bash的时候,每一次都去查询$PATH变量。每当显而易见的会使缓存的结果改变的操作(比如改变$PATH变量)执行以后,hash table会被清空。

    linux命令(可以使用type [command]的方式来查看命令所属的分类)的执行顺序:alias -> keyword(shell关键自,例如:if, for, while..) -> function(定义的shell函数) -> built-in(shell内置命令) -> $PATH(先执行/etc/porfile,然后类似栈的模式执行~/.bash_profile->~/.bashrc->/etc/bashrc)
    hash不会记录其中的keyword, function, built-in,并且记录alias的时候,只记录没有带路径的alias,记录的时候不会带上参数。

    可以使用set +/- hash 来关闭/开启hash table的机制;hash -r用于清空hash table;hash -d用于删除hash table中指定的记录;hash -l用于显示详细的信息;hash -p [path] [name]将命令name放入hash table中作为built-in。(built-in命令都可以只用help command来查询用法)

    command命令可以直接执行$PATH中的命令,跳过同名的function和built-in

    builtin命令可以直接执行built-in中的命令,跳过同名的function。enable -n [command]可以禁止built-in命令,enable恢复。



展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部