.bashrcに次のエイリアスを定義した場合:
alias cd="cd $1 && ls"
電話すると:
cd test
テストディレクトリのファイルは正しく表示されますが、現在のディレクトリは変更されません。
.bashrcに関数を定義する場合:
function cd {
cd "$1" && ls
}
今私が電話すると
cd test
テストディレクトリのファイルを正しく表示し、現在のディレクトリを「test」に変更します。
違いが何なのかご存知ですか?
ベストアンサー1
実際、拡張後の最初のエイリアス呼び出しの例では、次のようになります。
cd test ---> cd $1 && ls test
これがbashスクリプト呼び出しとエイリアス拡張の基本的な違いです!エイリアスを使用すると、エイリアスで定義されたすべての文字の後にパラメータが記録されます。代わりに単語を使わずに文字通り使用さ$1
れます。test
エイリアス定義でコマンドの順序を変更すると、それを簡単に確認できます。
alias cd="ls $1 && cd"
正しいディレクトリ変更を提供しますが、ディレクトリのリストはありません。