コマンドパラメータのエイリアス解析に関する問題

コマンドパラメータのエイリアス解析に関する問題

次のエイリアスがあります。

alias mv='mv -i'
alias git='LANG=en_US \git '

git mvその後、コマンドを実行すると、mv次のように解釈されますmv -i

$ git mv a b
error: unknown switch `i'

bashコマンドの場合にのみエイリアスを適用したいと思います。

バージョン:

  • Ubuntu 16.04.3 LTS
  • GNUバッシュ、バージョン4.3.48(1)
  • gitバージョン2.7.4(gitにも関連付けられていないようです)

メモ:

  • git \mv a b働く
  • エイリアシングgitをキャンセルすることも可能です\git mv a b

ベストアンサー1

gitエイリアスだから空白で終わる, bash は、次の単語に対してエイリアス拡張を実行します。

$ alias mv='mv -i'
$ alias git=': git '
$ set -x
$ git mv
+ : git mv -i

~から文書:

エイリアス値の最後の文字が空の場合、エイリアスの後の次のコマンドワードでもエイリアス拡張が確認されます。

gitスペースなしでエイリアスを作成します。

alias git='LANG=en_US git'

気づく:

代替テキストの最初の単語はエイリアスがあるかどうかをテストしますが、拡張する単語と同じエイリアスを持つ単語は再び拡張されません。たとえば、別名を指定lsできますls -Fが、Bashは代替テキストを再帰的に拡張しようとしません。

\gitだからそこにいる必要はありません。

おすすめ記事