変更できない.bashrc
シェルスクリプト内で表示する必要があるいくつかのエイリアス内に設定しました。
したがって、そのスクリプト内のエイリアスを展開できない限り、どのような代替手段がありますか?
(たとえば、python2.6
と同じになるように定義する必要がありますpython
)
エイリアスを使用する代わりに、関数を定義してエクスポートします。
スクリプトがまたはなしで使用し、それらを追加したいが、スクリプトを変更できないとしますmv
。-i
-v
function mv () { command mv -iv "$@"; }
export -f mv
これで、スクリプトはこれらのオプションを使用します。関数は、コマンドラインまたはラッパースクリプトから定義できます。
Bashのマニュアルには、「ほとんどすべての目的で、エイリアスよりもシェル関数が優先されます」と書かれています。
適切に記述されたスクリプトは、実行可能ファイルへの絶対パスを使用します(例/bin/mv
)。そうすることで、この手法が機能しなくなり、優れたセキュリティ対策になります。
スクリプトをラップできる場合は、ラッパーでエイリアスを定義し、. /path/to/script
スクリプトをソース()にすることができます。関数とエイリアスの両方がそのように機能するはずです。
できない場合は、コマンドをPATHに入れる必要があります。シンボリックリンクまたはスクリプトとして。
Bash関数はエイリアスよりも用途が広く、同じ目的を果たすことができます。
エイリアスを拡張するシェルオプションがあります:shopt -s expand_aliases
ただし、理由によりオフになっています-シェルスクリプトのエイリアスはサポートの悪夢です。別の方法は、完全なコマンドを使用することであり、推奨されます。