![是否有特定于文件夹的 .bashrc 或 .bash_profile?](https://linux22.com/image/1450760/%E6%98%AF%E5%90%A6%E6%9C%89%E7%89%B9%E5%AE%9A%E4%BA%8E%E6%96%87%E4%BB%B6%E5%A4%B9%E7%9A%84%20.bashrc%20%E6%88%96%20.bash_profile%EF%BC%9F.png)
是否可以有一个 bash 脚本(基本上像.bashrc
或.bash_profile
)仅在 cd 进入特定文件夹时执行?
答案1
将其添加到您的~/.bashrc
。
如果.bashrc
位于当前工作目录中:
PROMPT_COMMAND='if [[ "$bashrc" != "$PWD" && "$PWD" != "$HOME" && -e .bashrc ]]; then bashrc="$PWD"; . .bashrc; fi'
答案2
根据您的具体使用情况和限制,翁迪尔可能适合您的需求:
ondir 是一个小程序,用于自动执行特定于某些目录的任务。它的工作原理是,当您进入和离开目录时执行目录中的脚本。
它通过使用一个中心~/.ondirrc
文件来进行每个目录的配置来实现这一点。相比之下,PROMPT_COMMAND
@Cyrus 建议的巧妙设置允许配置驻留在各个目录中。每种方法都是有效的;这取决于您正在处理的约束和数据。
免责声明:我ondir
个人从未使用过。我在寻找一种自动处理方法时偶然发现了它git 用户配置每个目录。在这种情况下,ondir
不符合我的需要——我最终使用 git 别名将--config
选项传递给git clone
。
答案3
除了@Cyrus 答案之外,如果您使用zsh
,则需要使用precmd()
:
PROMPT_COMMAND='if [[ "$profile" != "$PWD" && "$PWD" != "$HOME" && -e .profile ]]; then profile="$PWD"; source .profile; fi'
precmd() { eval "$PROMPT_COMMAND" }
答案来自这个答案
注意:
我的提示测试.profile
不是.bashrc
。