bashrc:エイリアスと関数 - 複数のコマンドでcdを呼び出すことの違い

bashrc:エイリアスと関数 - 複数のコマンドでcdを呼び出すことの違い

.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"

正しいディレクトリ変更を提供しますが、ディレクトリのリストはありません。

おすすめ記事