[注 - 我解决我遇到了使用bash函数的问题,但我想知道为什么我最初的尝试没有成功。]bash - 如何解释别名?
我在Windows中运行git,并使用Git的bash命令行应用程序管理存储库。 我有几个仓库,我经常想要一次拉。以前我只是通过在命令行中输入以下内容来完成此操作:
for i in *; do cd $i; git pull --rebase; cd ..; done;
为了节省时间,我决定为此创建一个别名。所以,我创建的主目录下的.bashrc文件(C:在我的情况/ GIT),并添加行
alias pr="for i in *; do cd $i; git pull --rebase; cd ..; done;"
然而,这并没有在所有的工作中,产量
sh.exe" cd: /etc/profile.d/*.sh: No such file or directory
后面跟着git抱怨说它不在仓库中。单次呼叫输出将重复20次以上。 MinGW文件系统的根目录(其中/ etc源自上面)是我将git安装到(C:/ Program Files(x86)/ Git)的地方。现在
,我创造我的.bashrc文件中的函数,而不是解决到底这个问题,像这样:
pr(){
for i in *
do
cd $i
git pull --rebase
cd ..
done
}
所以,我的问题是解决了,但我想知道为什么我的初始方法不起作用。很明显,有些别名我不明白,大概是,把'我'放在一边。我的期望是bash会替换别名映射的字符串,然后对其进行评估,但似乎并不那么简单。
如果在'pr'别名赋值和重新来源之前添加'echo“i = $ i”',会发生什么? – BroSlow 2014-11-05 11:26:08
此外,您可能希望将其短路条件'cd“$ i”&& git pull --rebase && cd ..'。否则,你可能会得到一些奇怪的结果('$ i'不是目录,但你仍然运行'git'并向上移动一个等级......) – BroSlow 2014-11-05 11:34:56
[bash alias命令可能带有单引号和双引号] (http://stackoverflow.com/questions/20111063/bash-alias-command-with-both-single-and-double-quotes) – tripleee 2014-11-05 13:36:46