Shell

命令在 bash_profile 與終端中的作用不同

  • October 13, 2017

git branch -r | awk '{print $1}'輸入終端產生:

origin/HEAD
origin/master

alias test1="git branch -r | awk '{print $1}'"產量時.bash_profile

 origin/HEAD -> origin/master
 origin/master

為什麼awk '{print $1}'在中被忽略.bash_profile

定義別名:

$ alias test1="git branch -r | awk '{print $1}'"

然後看它的定義:

$ alias test1
alias test1='git branch -r | awk '\''{print }'\'''

看看怎麼$1消失的?那是因為您的別名定義是用雙引號引起來的。這意味著 shell 擴展了$1定義別名的字元串中的變數。它的值為空。

在別名定義周圍使用單引號,轉義$,或編寫適當的函式:

test1 () {
   git branch -r | awk '{ print $1 }'
}

一個好的經驗法則可能是:如果您的別名比單個命令更複雜(並且需要特殊引用等),則將其編寫為 shell 函式。

引用自:https://unix.stackexchange.com/questions/397804