お使いのシステム (多くの Unix システムと同様) には外部 cd
がありません コマンド(少なくともそのパスではない)。あったとしても ls
元のディレクトリのディレクトリ リストが表示されます。外部コマンドは、呼び出しプロセス (シェル) のディレクトリを変更できません。
unalias cd
で環境からエイリアスを削除します (また、追加した可能性のあるすべてのシェル初期化ファイルからその定義を削除します)。
シェル関数を使用すると、 cd
として動作させることができます ls
を追加で呼び出して、通常は実行します。 最後に cd
の場合 成功:
cd () {
command cd "[email protected]" && ls -lah
}
または、
cd () { command cd "[email protected]" && ls -lah; }
これは cd
を呼び出します コマンドは、関数に指定したのと同じコマンド ライン引数を使用してシェルに組み込まれています。ディレクトリの変更が成功した場合、ls
実行されます。
command
コマンドは、シェルが関数を再帰的に実行するのを停止します。
関数の定義 (上記のように) は、シェルの起動ファイルに入ります。 bash
で 、これは ~/.bashrc
かもしれません .関数定義は、次の新しいインタラクティブ シェル セッションでアクティブになります。 . 今すぐ有効にしたい場合 をクリックし、インタラクティブ シェル プロンプトで関数定義をそのまま実行します。これにより、現在のインタラクティブ セッション内で関数が定義されます。
cd
のシステムで は外部コマンドとして使用できますが、このコマンドも呼び出しプロセスのディレクトリを変更しません。このようなコマンドの唯一の実際の用途は、POSIX 準拠を提供し、ディレクトリを特定のディレクトリに変更できるかどうかのテストとして機能することです。可能 .
unalias cd
でエイリアスを再度削除することで解決できました
原因:
$ type cd
cd is a shell builtin