在我的.bashrc文件中,我有以下两个命令:
hash ih kl klt
hash
当源.bashrc文件时,输出是预期的:
hits command
0 /userdata/cfor/utils/worklib/kl
0 /userdata/cfor/utils/prodlib/ih
0 /opt/local/tools/bin/vi
但后来当我进入"哈希"在命令提示符下,它告诉我哈希表是空的。好像哈希指令的效果仅在.bashrc文件的来源时生效。我放了一个" echo $$" .bashrc文件中的指令,然后在源完成后检查$$的值,它们是相同的。为什么在完成.bashrc文件的源代码后,哈希命令的效果仍然存在?
谢谢!
答案 0 :(得分:0)
您需要从~/.bashrc
或~/.profile
中提取~/.bash_profile
。当作为登录shell调用时,正如我打开新终端时发生的那样,bash不会提供~/.bashrc
。
答案 1 :(得分:0)
我解决了这个问题。我发现我的系统管理员在/ etc / profile文件中引入了一个链接到另一个脚本,该脚本导致.bashrc文件作为系列中的几个文件中的一个来源。这与点文件在默认环境中自动获取的方式完全不同。无论如何,其中一个“额外”脚本正在重置PATH,这会导致命令哈希表重新初始化。我发现即使我公司的修改,〜/ .bash_profile文件仍然是最后一个要获取的文件,所以我把哈希指令放在那里。然后,在我退出并重新登录后,哈希指令的结果仍然存在。
感谢您的回复,他们帮助指导了在哪里寻找。