私はこのsetup
ファイルを持っています:
function latest {
count=${1:-5} ;
echo "Just changed"
ls -lrtd * | tail -$count ;
}
私はそれをそう呼ぶ:
. setup
latest
次にbashに関数が定義されているかどうかを尋ねます。
>type latest
latest is a function
latest ()
{
count=${1:-5};
echo "Just changed";
ls --color=auto -lrtd * | tail -$count
}
Just changed
latest
他のファイルの定義を見ていないことを確認するために使用する任意の文字列です。
問題はBashが--color=auto
コマンドに追加する理由ですls
(とにかく出力がパイプで接続されているので役に立ちません)。はい、私のシェルでは、エイリアスはls
ですls --color=auto
。エイリアスを削除すると、これは発生しません。しかし、関数内ではエイリアスは使用されていないと思いますが、どのような場合でも関数定義時にこれらの置換が発生しますか?
ベストアンサー1
文書化された動作を観察します。Bash マニュアルのエイリアスセクション:
エイリアスは、関数定義自体がコマンドであるため、関数が実行されるのではなく、関数定義を読み取るときに拡張されます。