他の場所では、次のCD関数を見たことがあります。
cd()
{
builtin cd "$@"
}
$@
代わりに使用することをお勧めするのはなぜですか$1
?
テストディレクトリ "r st"を作成し、この関数を含むスクリプトを呼び出しましたが、何らかの方法で機能しました。
$ . cdtest.sh "r st"
しかし、 $ . cdtest.sh r st
使用するかどうかに関係なく"$@"
失敗します。"$1"
ベストアンサー1
によると、パラメータを受け入れるからですbash(1)
。cd
cd [-L|[-P [-e]] [-@]] [dir]
Change the current directory to dir. if dir is not supplied,
...
したがって、ディレクトリは$1
オプション(-L
別のフラグなど)である可能性があるため、実際には存在しない可能性があります。
どのくらい悪いですか?
$ cd -L /var/tmp
$ pwd
/var/tmp
$ cd() { builtin cd "$1"; }
$ cd -L /var/tmp
$ pwd
/home/jhqdoe
$
期待どおりに使用しないと、状況が大幅に間違っている可能性がありますcd "$1"
。