実際には、同じ名前の別のエイリアスを拡張するエイリアスをBashでどのように生成しますか?
なぜ:
私はかつて次のことをGREP_OPTIONS
しました。.bashrc
GREP_OPTIONS="-I --exclude=\*~"
setup-java.sh
また、いくつかのJavaプロジェクトを操作する前に呼び出すスクリプト(例)があります。これには次の行が含まれます。
GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=classes"
Sassも使用している場合は、setup-sass.sh
次の行を含む呼び出しを行います。
GREP_OPTIONS="$GREP_OPTIONS --exclude-dir=\*/.sass-cache"
しかし、GREP_OPTIONS
廃止明らかに、標準的な解決策はエイリアスまたはいくつかのスクリプトを作成することです。
ベストアンサー1
Bash は、エイリアス値を次の場所に保存します。名前の人
BASH_ALIASES
:
$ alias foo=bar
$ echo ${BASH_ALIASES[foo]}
bar
そしてパラメータ拡張 最後に設定されたエイリアス(存在する場合)またはデフォルト値を取得できます。
alias grep="${BASH_ALIASES[grep]:-grep} -I --exclude=\*~"
次に、次の操作を行いますsetup-java.sh
。
alias grep="${BASH_ALIASES[grep]:-grep} -I --exclude=\*~ --exclude-dir=classes"
...ついにsetup-sass.sh
:
alias grep="${BASH_ALIASES[grep]:-grep} -I --exclude=\*~ --exclude-dir=\*/.sass-cache"
これらの3行を呼び出すと、希望の結果が得られます。
$ echo ${BASH_ALIASES[grep]:-grep}
grep -I --exclude=\*~ -I --exclude=\*~ --exclude-dir=classes -I --exclude=\*~ --exclude-dir=\*/.sass-cache