web-dev-qa-db-ja.com

タブをクリックしたときのシェルの初期化の問題、getcwdの何が問題になっていますか?

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

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

136
hugemeow

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

251
Costi Ciudatu

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

52
Meetai.com

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

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

これは、bashのgetcwd()の内部実装にトレースできるようです。クロスコンパイルされた場合、mallocのgetcwd()の使用を確認できないため、慎重であり、GETCWD_BROKENを設定し、getcwd()の内部実装を使用します。この内部実装は、OverlayFSではうまく機能しないようです。

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

bash_cv_getcwd_malloc=yesを使用してbashを設定および再構築できます(実際にbashをビルドしていて、Cライブラリがgetcwd呼び出しをmallocする場合)。

5
jdknight

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

4
Viraj Kulkarni