sh:0:getcwd()failed:そのようなファイルまたはディレクトリはありません


11

Ubuntu 12.04でARMコードをコンパイルしようとしています。

ローカルディレクトリにコードを配置すると、すべて正常に動作します。しかし、引用されたマウントディレクトリにコードを配置すると、このエラーが発生します。

sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory

ここに私のマウントコマンドがあります:

sudo mount -t cifs -o username=wx,passwd=wx,auto,nounix,noserverino,file_mode=0777,dir_mode=0777,uid=user,gid=users,noperm,rw,uid=1002,gid=1002 //192.165.54.18/prj_9330  /home/dongjw/work_dir/work_9330

Ubuntu 12.04 64ビットを使用しています

このエラーの原因は何ですか?


1
作業ディレクトリはもう存在しません。cd [PATH]シェルを入力して、既存のシェルに移動します。
デビッドフォースター14年

こちらもご覧ください:stackoverflow.com/a/21593371/7111561
derHugo

回答:


7

Ubuntu 12.10 64ビットのpythonサブプロセスでjshintを使用すると、このエラーが発生しました。

node.js:464
var cwd = process.cwd();
                  ^
Error: ENOENT, no such file or directory
    at Function.resolveArgv0 (node.js:464:23)
    at startup (node.js:51:13)
    at node.js:555:3

これは、ディレクトリをその下から削除または移動し、現在のディレクトリを特定できないために発生します。

この問題が発生しているかどうかを確認する方法:

コマンドを実行しますcd . (このエラーが発生した場合、この問題が発生しています)。

el@apollo:~/foo$ cd .
cd: error retrieving current directory: getcwd: cannot access parent 
directories: No such file or director

ディレクトリを現在のディレクトリに変更しようとしましたが、できませんでした。

エラーを再現する方法:

jshintはこのエラーの影響を受けます。ディレクトリをfoo作成し、そこにcdし、というファイルを作成しますmyjavascript.js

cd /home/el
mkdir foo
cd foo
touch myjavascript.js
jshint myjavascript.js

jshintは正しく実行され、正しいエラーはないと表示されます。

2番目のターミナルを開き、下からrm -rfディレクトリを開き/home/el/fooます。

rm -rf /home/el/foo

jshint myjavascript.js最初の端末からもう一度実行すると、エラーが発生します。

el@apollo:~/foo$ jshint myjavascript.js 

    node.js:464
        var cwd = process.cwd();
                      ^
    Error: ENOENT, no such file or directory
        at Function.resolveArgv0 (node.js:464:23)
        at startup (node.js:51:13)
        at node.js:555:3

ディレクトリがなくなった!そして、たとえ同じ内容で置き換えたとしても、署名は異なり、端末は回復できず、メソッドgetcwdは現在のディレクトリが何であるかを知ることができません。

3つのソリューション:

端末は、現在のディレクトリが存在しないか、署名が変更されたために、現在のディレクトリが何であるかについて混乱しています。次のいずれかを実行して修正します。

  1. cd ..エラーが表示されなくなるまでコマンドを実行します。これにより、ターミナルがファイルシステムと再同期されます。次に、ディレクトリに戻ってcdします。再試行。エラーはなくなります。

  2. su youruserターミナルで使用し、パスワードを入力します。更新され、同じディレクトリに戻ります。

  3. ターミナルを閉じて再度開き、古いディレクトリ署名をフラッシュします。または、すべてのプログラム(jshint)または古いディレクトリシグネチャを許容または回復できない他の何千ものプログラムに厄介なメールを送信します。


代わりに、実行中のcd ..あなたも、単に「頻繁に」可能性がcd ~直接あなたのhomefolderへ
derHugo

4

同じエラーが表示されますが、ホームディレクトリでスクリプトを実行しようとしました。私はそれを解決しました:

pushd ~ 1>/dev/null; pwd ; popd 1>/dev/null

これにより、myがホームディレクトリに移動し、pwdが実行されます(ただし、好きなものを実行できます)。次に、popdにより、現在の場所に戻ります。あなたが戻って移動する必要がない場合

cd; pwd

私の問題を解決するのに十分でしょう(あなたの助けになることを願っています)。

編集1>/dev/null部分はオプションです。シェルスクリプト内で上記の行を使用できるように追加します。この場合、追加の出力は必要ありません。


そのため、これをbashスクリプトに貼り付けて、望まない出力にならないようにします。commandline-fuを見つけたとき、自分のニーズに合わせて簡単に切り詰めることができるため、これを使用している人は誰でも私のようになると思うので、できるだけ完全な回答を追加しようとします。
アレックスロシュ

OK元の質問に直接関連しない関数。)
Alexxロシュ

悲しいことにそのようです:(
Braiam

-1

私もpython virtualenvで同じ問題を抱えていました。簡単な再起動で修正されました

sudo shutdown -r now

2
修正するために再起動する必要はないと思いますが、ここの他の回答に従うだけでcd、既存のディレクトリに移動できます。
-wjandrea

新しい質問がある場合は、[ 質問する ]ボタンをクリックして質問してください。コンテキストの提供に役立つ場合は、この質問へのリンクを含めてください。- レビューから
-N0rbert

1
@ N0rbertこれは新しい質問ではなく、明らかに、IMHOの有効な(確かに最適ではありませんが)ソリューションに答えて提供しようとする試みです。
バイトコマンダー

@ByteCommander間違ってクリックしてしまった、ごめんなさい。
N0rbert
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.