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