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


153

bashで[タブ]をクリックすると、エラーメッセージが表示されますが、何が問題なのですか?

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

シェルの初期化問題を解決する方法?

回答:


281

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


2
私は私のディレクトリが存在しないとは思わない、誰かがそれを再作成したのではなく、私は/ rootにいます...そのため、問題はあなたの言うこととは少し異なるかもしれません...
hugemeow

1
HOME環境変数を確認できますか?echo $HOME; それが存在しない場所を指している場合、それはそうではありません。
Costi Ciudatu 2012

1
(私はtmuxでシェルを使用しています)Tabは時々うまく機能しますが、時々tmuxで新しいタブを作成し、Tabを押すと、このエラーが表示され、何が起こったのかわかりません:(
hugemeow

@kevinarpeありがとうございます。私はいつもそれが何もしないには十分スマートであると思っていましたcd .
コスティシウダトゥ

2
@kevinarpe、はい、$PWDPOSIXによって定義されることが保証されています。pubs.opengroup.org/onlinepubs/9699919799/utilities/…を
Charles Duffy

61

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


7

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

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

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

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

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


ライブラリの完全な更新を行うことでエラーを修正できました
Richard Day

5

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


私はここで完全なライブラリの更新を行うことによって、Ubuntuの14にそれを修正することができました:digitalocean.com/community/tutorials/...
リチャード日
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.