Bash在cd进入目录时自动启动脚本
玩android代码进入目录后总是需要, 比较烦, 能不能在cd进入时自动完成这个功能呢?1
source build/envsetup.sh
可以的, 首先我们在中重新定义cd这个函数:1
.bashrc
mycd() {
\cd $@
local hook_file=.cd_hook
if [[ -f $hook_file ]]; then
. $hook_file
fi
}
alias cd='mycd' 这样, 在进入一个目录后就会检测该目录下是否有文件, 如果有的话就自动1
.cd_hook
之.
然后我们在源代码目录下新建一个1
source
文件:1
.cd_hook
type lunch >/dev/null 2>&1 # 用检测lunch函数是否有的方式确定是不是已经source过了
if [[ $? -ne 0 ]]; then
source build/envsetup.sh
fi 注意, 这样修改cd是有一定安全性问题的, 因为恶意程序可以在目录下放置文件来做任何事情. 因此最好还是不要1
.cd_hook
. 在实际使用的时候, 我用的是1
alias cd
, 这样我只有用”c”命令进入目录时会运行1
alias c='mycd'
.1
.cd_hook
顺便提一句, 在脚本中, 为了防止alias, 可以用转义. 例如1
\
会确保调用的不是alias后的ls.1
\ls ~