0

変更できない.bashrcシェルスクリプト内で表示する必要があるいくつかのエイリアス内に設定しました。

したがって、そのスクリプト内のエイリアスを展開できない限り、どのような代替手段がありますか?

(たとえば、python2.6と同じになるように定義する必要がありますpython

4

4 に答える 4

6

エイリアスを使用する代わりに、関数を定義してエクスポートします。

スクリプトがまたはなしで使用し、それらを追加したいが、スクリプトを変更できないとしますmv-i-v

function mv () { command mv -iv "$@"; }
export -f mv

これで、スクリプトはこれらのオプションを使用します。関数は、コマンドラインまたはラッパースクリプトから定義できます。

Bashのマニュアルには、「ほとんどすべての目的で、エイリアスよりもシェル関数が優先されます」と書かれています。

適切に記述されたスクリプトは、実行可能ファイルへの絶対パスを使用します(例/bin/mv)。そうすることで、この手法が機能しなくなり、優れたセキュリティ対策になります。

于 2012-06-21T11:09:06.353 に答える
2

スクリプトをラップできる場合は、ラッパーでエイリアスを定義し、. /path/to/scriptスクリプトをソース()にすることができます。関数とエイリアスの両方がそのように機能するはずです。

できない場合は、コマンドをPATHに入れる必要があります。シンボリックリンクまたはスクリプトとして。

于 2012-06-21T08:31:36.053 に答える
1

Bash関数はエイリアスよりも用途が広く、同じ目的を果たすことができます。

于 2012-06-21T08:40:51.207 に答える
0

エイリアスを拡張するシェルオプションがあります:shopt -s expand_aliasesただし、理由によりオフになっています-シェルスクリプトのエイリアスはサポートの悪夢です。別の方法は、完全なコマンドを使用することであり、推奨されます。

于 2012-06-21T08:32:13.323 に答える