同事遇到一个很奇妙的问题:
在取下的源码目录运行lunch选择编译选项时,居然提示lunch没有安装~
如下:
root@desktop-ubuntu:/android_src# ./build/envsetup.sh
including device/htc/passion/vendorsetup.sh
including device/samsung/crespo4g/vendorsetup.sh
including device/samsung/crespo/vendorsetup.sh
root@desktop-ubuntu:/android_src# lunch
程序“lunch”尚未安装。 您可以使用以下命令安装:
apt-get install lunch
我们着实纳闷,因为Lunch根本不是一个可执行程序,而仅仅是写在envsetup.sh文件里的一个函数,百思不得其解,最终发现是第一条命令输错了~
正确的形式应该是:
. build/envsetup.sh // 一定要注意,. 后面有个空格
这样才去执行lunch就不会出错了~但这到底是什么原因,想不明白,有知道的朋友请告诉下~
======================================================
下面是网友 傻样精英 给出的解释,多谢这位仁兄:
source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。
注意:source命令与shell scripts的区别是,
source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。