[注 - 我解決我遇到了使用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