在我的.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 文件的来源时。 我在 .bashrc 文件中放了一个"echo $$"指令,然后在采购完成后检查了 $$ 的值,它们是相同的。 为什么哈希命令的效果在 .bashrc 文件完成源后不保留?
谢谢!
从~/.profile
或~/.bash_profile
获取~/.bashrc
。当作为登录 shell 调用时,就像我打开新终端时发生的那样,bash 不会获取~/.bashrc
。
查看 Bash 启动文件的文档。
我解决了这个问题。 我发现我的系统管理员在/etc/profile 文件中引入了一个指向另一个脚本的链接,该脚本导致 .bashrc 文件作为系列中的几个文件之一。 这与在默认环境中自动获取点文件的方式完全不同。 无论如何,其中一个"额外"脚本正在重置 PATH,这会导致命令哈希表重新初始化。 我发现即使我公司进行了修改,~/.bash_profile 文件仍然是最后一个要获取的文件,所以我把我的哈希指令放在那里。 然后,在我注销并重新登录后,哈希指令的结果仍然存在。
感谢您的回复,他们帮助指导了哪里看。