-bash: /bin/cd: そのファイルやディレクトリはありません。 cd後に自動的にlsを実行します。

-bash: /bin/cd: そのファイルやディレクトリはありません。 cd後に自動的にlsを実行します。

誤って注文を台無しにしましたcd

ls呼び出してから自動的に実行してみます。cd

する必要があるという記事を見つけましalias cd='/bin/cd && /bin/ls'たが、今は-bash: /bin/cd: No such file or directoryディレクトリを変更できません。

ベストアンサー1

あなたのシステム(多くのUnixシステムと同様)には外部コマンドはありませんcd(少なくともそのパスにはありません)。 1つがあっても、ls元のディレクトリのディレクトリのリストを提供します。外部コマンドは、呼び出しプロセス(シェル)のディレクトリ1を変更できません。

環境からエイリアスを削除しますunalias cd(エイリアスを追加した可能性があるすべてのシェル初期化ファイルからその定義を削除します)。

シェル関数を使用すると正常に機能し、成功すると最後に追加の呼び出しを実行できますcdlscd

cd () {
    command cd "$@" && ls -lah
}

または、

cd () { command cd "$@" && ls -lah; }

これにより、cd関数に提供したのと同じコマンドライン引数を使用してシェルに組み込まれたコマンドが呼び出されます。ディレクトリの変更が成功すると、このコマンドが実行されますls

このcommandコマンドは、シェルが関数を再帰的に実行するのを防ぎます。

上記で作成した関数定義は、シェルの起動ファイルに保存されます。はいbash、そうかもしれません~/.bashrc。その後、関数定義はNext 新しいインタラクティブシェルセッション。有効にしたい場合を押してから対話型シェルプロンプトで関数定義をそのまま実行すると、現在の対話型セッションで関数定義が定義されます。


1このコマンドを外部コマンドとして使用できるシステムでは、cdこのコマンドは呼び出しプロセスのディレクトリも変更しません。これらのコマンドの唯一の実際の使用は、POSIX準拠を提供し、ディレクトリを特定のディレクトリに変更するテストとして機能することです。可能でしょう

おすすめ記事