159

bash で Tab をクリックすると、エラー メッセージが表示されます。

symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success
symlink-hook: error retrieving current directory: getcwd: cannot access parent directories: Success

時々、エラーメッセージは次のとおりです。

shell-init: error retrieving current directory: getcwd: cannot access parent directories: No s uch file or directory

シェルの初期化の問題を解決するには?

4

4 に答える 4

300

これは通常、現在のディレクトリが存在しない場合に発生します。ほとんどの場合、別の端末からそのディレクトリを削除します(スクリプト内などから)。これを取り除くには、その間に現在のディレクトリが再作成された場合に備えて、cd別の (既存の) ディレクトリに移動してから元にcd戻します。最も単純なものは次のとおりcd; cd -です。

于 2012-09-09T10:28:16.180 に答える
68

ディレクトリを別のディレクトリに変更して戻ってください。おそらく、削除または移動されたものと思われます。

于 2014-06-25T18:43:36.003 に答える
7

偶然にも、これは OverlayFS (またはその他の特別なファイル システム タイプ) を使用するディレクトリで発生していますか?

クロスコンパイルされたバージョンの bash がgetcwd、OverlayFS に問題がある内部実装を使用するというこの問題が発生しました。私はこれに関する情報をここで見つけました:

これは、bash での getcwd() の内部実装にたどることができるようです。クロスコンパイルすると、getcwd() が malloc を使用しているかどうかをチェックできないため、慎重に GETCWD_BROKEN を設定し、getcwd() の内部実装を使用します。この内部実装は、OverlayFS ではうまく機能しないようです。

http://permalink.gmane.org/gmane.linux.embedded.yocto.general/25204

bash を構成して再構築できますbash_cv_getcwd_malloc=yes(実際に bash を構築していて、C ライブラリが getcwd 呼び出しを malloc する場合)。

于 2015-09-02T20:53:30.633 に答える
6

はい、cd; および cd - 動作します。わかる理由は、ディレクトリが他の端末または他のプログラムから削除され、再作成されていることです。そのため、プログラムが古い i ノード エントリにアクセスできないように、i ノード エントリが変更されます。

于 2013-09-28T23:55:48.017 に答える