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
がどのように消えたかをご覧ください。これは、エイリアス定義が二重引用符で囲まれているためです。これは、シェルがエイリアスを定義した文字列の$1
変数を展開したことを意味します。その値は空でした。
エイリアス定義を一重引用符で囲むか、$
をエスケープするか、適切な関数を記述してください。
test1 () {
git branch -r | awk '{ print $1 }'
}
経験則としては、次のようになります。エイリアスが単一のコマンドよりも複雑な場合(および特別な引用符などが必要な場合)、代わりにシェル関数として記述します。