这类似于目录的 .htaccess。
我有以下内容:
文件:~/.myapprc
APP_USER=alagu
APP_DOMAIN=goyaka.com
文件:~/testapp/.myapprc
APP_USER=alagu_test
APP_DOMAIN=localhost
我想要的:
[alagu@~ ]$ echo $APP_USER
alagu
[alagu@~ ]$ cd ~/testapp
[alagu@~ ]$ echo $APP_USER
alagu_test
我如何完成这项工作?
最佳答案
看起来您想在每次更改目录时都获取 .myapprc
。
我能想到您可以使用两种途径 - PROMPT_COMMAND
和 DEBUG
陷阱。
要对第一个执行此操作,您将运行以下命令一次:
PROMPT_COMMAND="[ -f .myapprc ] && . .myapprc"
第二个:
trap "[ -f .myapprc ] && . .myapprc" DEBUG
这些将为每个提示获取一次文件,因此如果获取该文件的成本很高,您可以扩展它以检查 $PWD
是否已更改。
你也可以覆盖 cd
,但这可能会破坏一些 shell 脚本:
alias cd=cd_
function cd_
{
\cd "$@"
local ret=$?
[ -f .myapprc ] && . .myapprc
return $ret
}
但是做任何这些都不是一个好主意 - 嘿,这些都是巨大的安全漏洞,因为你最终会运行 .myapprc
中的任何命令无论您当前的工作目录是什么。
Joachim 的后期编辑 - 将其与 PROMPT_COMMAND
/trap
解决方案一起使用可以避免过度执行 .myapprc 并执行以下操作:
PROMPT_COMMAND='if [ -f .myapprc -a "$PWD"!= "$PWDLAST"];然后 PWDLAST="$PWD";来源.myapprc; fi'
关于linux - 递归覆盖bash中的rc文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9579687/