Cygwin エラー - '/bin/bash' の実行に失敗しました: そのようなファイルまたはディレクトリはありません

Cygwin エラー - '/bin/bash' の実行に失敗しました: そのようなファイルまたはディレクトリはありません

Windows 7 に Cygwin をダウンロードしてインストールしました。インストール元のフォルダが 300 MB 弱だったのに対し、フォルダには 1.2 GB のデータが含まれており、正常にインストールされたようですC:\Cygwin64。ただし、デスクトップ ショートカットをクリックすると が開きmintty.exe、次のエラーが表示されます。

'/bin/bash' の実行に失敗しました: そのようなファイルまたはディレクトリはありません

これは、私がすべての基本ファイルをインストールしたにもかかわらず、そのbash一部であるはずのものです。たとえそうでなかったとしても、インストーラーは後でそれを必須パッケージとして表示し、自動的にインストールしました。では、ここで何が起こっているのか誰か分かりますか? これは、Cygwin のインストールを正常に動作させようとする、この 1 日での 4 回目の試みかもしれません。私は、Cygwin はインストールできないのではと思い始めています。

答え1

私は、さらに別のインストールでこの問題を解決することができました。今回は、ファイルを個別にダウンロードしてローカルに保存されたフォルダーからインストールするのではなく (オプション 2 と 3)、ネットからダウンロードしてインストールすることを選択しました (インストーラーのオプション 1)。これらのオプションを選択するとインストールが不完全になる理由はわかりませんが、bashエラーなしで実行できるようになりました。

答え2

Web から直接デフォルトの新規インストールを実行した後、同じ問題が発生しました。

「C:\cygwin64\bin」に移動して「ash.exe」を複製し、コピーの名前を「bash.exe」に変更することで解決しました。

(偶然にこれを試していたのですが、bash が見つからず、この不吉な ash ファイルを見つけたのです)

答え3

問題

よろしければ、下にスクロールして 2 つの解決策、特に私にとってはうまくいった 2 番目の解決策をご覧ください。

コンピューターの破損した部分を回復した後 (ディレクトリSystem32が破損した後 - うわっ!)、この問題に遭遇しました。この種の問題は以前にも発生しており (他の状況により)、C:\cygwin64フォルダーを含むディレクトリと少なくとも他のいくつかのファイルがまだ残っていました。

setup-x86_64.exe以前は、 ( に入力して)を実行するだけで簡単に再インストールできましたC:\cygwin64。その後、bashに戻ります。私は常にオンラインオプションでこれを実行しますhttps://mirrors.kernel.orgが、インストールGUIでのみ選択した場合でもbash、この問題が発生しました。エラーは次のように表示されました。

/bin/bash: Exit 126.
Failed to run '/bin/bash': No such file or directory

Cygwin ターミナル (エミュレーター) に、上記のテキスト (例: 「/bin/bash: 終了 126。'/bin/bash' の実行に失敗しました: そのようなファイルまたはディレクトリはありません」) を入力します。

ディレクトリを確認するとbin、確かにbash欠落していることがわかりました。コマンドプロンプト(CMD)から

C:\Windows\System32>C:\cygwin64\Cygwin
'bash' is not recognized as an internal or external command,
operable program or batch file.

C:\Windows\System32>dir C:\cygwin64\bin\bas*
 Volume in drive C is ██████████
 Volume Serial Number is ██████████

 Directory of C:\cygwin64\bin

File Not Found

C:\cygwin64\bin>

通常、Cygwin は次のいずれかの方法で実行します。

  1. デスクトップのショートカットを使用する。これは、(Windows) コマンドプロンプトから次のコマンドを実行するのと同じです。
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -

または

  1. ファイルの使用Cygwin.bat。まずファイルの内容を示し、次にそれを実行してみた結果を示します。
C:\Windows\System32>type C:\cygwin64\Cygwin.bat
@echo off

C:
chdir C:\cygwin64\bin

bash --login -i

C:\Windows\System32>C:\cygwin64\Cygwin
'bash' is not recognized as an internal or external command,
operable program or batch file.

C:\cygwin64\bin>

最初の(失敗した)解決策

発見bash-<version>.tar.xz

以前からダウンロードしていたhttps://mirrors.kernel.orgので、フォルダがありました。

C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f

もう少し調べてみるとbash-4.4.12-3.tar.xz

C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f\x86_64\release\bash

完全なパスを作成する

C:\cygwin64\http%3a%2f%2fmirrors.kernel.org%2fsourceware%2fcygwin%2f\x86_64\release\bash\bash-4.4.12-3.tar.xz

私は結局これを7zipただし、WinRARまたは同様のもの。

(Windowsで利用できるようになったことについて少し愚痴を言いましたtarが、それを使っても抽出はうまくいきませんでした。愚痴の内容は以下で見ることができます。ここtarWindows 10でネイティブに動作する方法についてもっと知りたい場合はcurl、tarballをデスクトップにコピー/貼り付けし、右クリックして「展開」を2回選択して中身を確認しました。そのすべてを

C:\Users\bballdave025\Desktop\bash-4.4.12-3\

その時点で、中身を見ることができました。次に、内部のファイルの場所を、Cygwin が動作しているマシン上のファイルの場所と比較しました。すべてのファイルを見つけることができたので、それらを適切な位置に移動するだけにするつもりでした。

他の人達、おそらくgit bash(のようにこのポスター)(アーカイブ) またはmingw/ msys2(いいねこのポスター)(アーカイブ済み)、私のエラーではシステムが見つけられなかったと表示されています/bin/bashが、これはあなたのエラーが参照する方法とは異なるため/usr/bin/bash、いくつかの違いがあることに注意してください。

C:\Users\bballdave025\Desktop\bash-4.4.12-3>tree /a /f .
Folder PATH listing for volume ██████████ OS
Volume serial number is ██████████ ██████████
C:\USERS\BBALLDAVE025\DESKTOP\BASH-4.4.12-3
|
+---etc               \   . On the working computer's version, I found
|   \---postinstall    }-' C:\cygwin64\etc\postinstall\bash.sh.done
|           bash.sh   /   I'm going to move the file from where you
|                       see it to _my_ C:\cygwin64\etc\postinstall.sh
|                     Then I'll run it, and if the tests pass, I'll
|                   rename it to bash.sh.done . I'll do that after
|                 moving all the others.
|
\---usr                 
    +---bin              
    |       bash.exe     \     
    |       bashbug       }---  I'll move these three files into 
    |       sh.exe       /      _my_  C:\cygwin64\bin   FIRST (1)
    |
    +---include
    |   \---bash                      \    . I'll move this bash
    |           <lots of *.h files>    }--' directory and all its
    |                                 /  constituent header (*.h)
    |                                  files to _my_ directory,
    |                                      C:\cygwin64\usr\include\
    |
    +---lib
    |       libbash.dll.a  }- I'll move this one file to _my_
    |                     /                         C:\cygwin64\lib\
    |
    |
    |                                          \
    \---share                                   \
        +---doc                                  :
        |   +---bash                              \
        |   |   +---<lots of bash doc stuff>       :
        |   |                                      |
        |   \---Cygwin                             : 
        |           bash.README                    |   .-I'll put the
        |                                      _.-'  _/ doc, info,
        +---info                              /   _-'  locale, and
        |       bash.info.gz                  \_/'  man directories
        |                                   --'   in _my_
        |                                  /  C:\cygdrive64\usr\share\
        +---locale                         `--------...____   directory,  
        |   +---<lots of locales which have the same  >    :  which is 
        |   |   <structure underneath; the last locale>   /  where they
        |   |   <(serving as an example) is below     >  :  were in the
        |   \---zh_TW                                   /   working
        |       \---LC_MESSAGES                        /    version.
        |               bash.mo                       /
        |                                            :
        \---man                                     /
            \---man1                               :
                    <lots of PROGRAM.gz files>    /
                                                 /                              

はい、戻りたいと思っていますが、この回答の一部をアップして保存しておきたいと思います。

2番目の解決策

友人にも同じことがありました。管理者が彼女のアカウントを設定しましたが、その管理者は「自分のフック」をそのアカウントに残していました。つまり、何らかの所有権を持っていたのです。その管理者はもう私たちが働いていた場所で働いていないので、私たちはすべてを修正する方法を考えなければなりませんでした。

まず、すべてを削除しようとしましたが、削除できないファイルやフォルダが常にいくつかありました。それらは管理者 (ちなみに、管理者は本当にいい人です) が所有していたためです。管理者として削除を実行しても削除できませんでした ( をFile Manager -> C -> Windows -> explorer.exe右クリックして「管理者として実行」し、ディレクトリに移動してC:\cygwin64削除を試みましたが、だめでした)。

最終的に動作させるには、管理者としてログインしてベースディレクトリと他のすべてのディレクトリの権限を変更し、その後ディレクトリを削除してC:\cygwin再作成し、setup-86_64.exe新しいcygwin64ディレクトリに配置してセットアップを実行する必要がありました。できるbashディレクトリ全体の権限を変更して GUIで再インストールしようとしましたsetup-x86_64.exeが、それを試してから Cygwin ターミナルにアクセスすると、次のような結果になりました。

bballdave025@MY_MACHINE ~
$ wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
--2020-04-26 13:08:26--  https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.68.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.68.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13765 (13K) [text/plain]
apt-cyg: Permission denied

Cannot write to ‘apt-cyg’ (Permission denied).

bballdave025@MY_MACHINE ~
$ stat .
  File: .
  Size: 0               Blocks: 24         IO Block: ██████████  directory
Device: ██████████/██████████   Inode: ██████████  Links: 1
Access: (0575/dr-xrwxr-x)  Uid: (██████████/   bballdave025)   Gid: (██████████/Unknown+Group)
Access: 2020-03-25 06:44:06.256806800 █████
Modify: 2020-03-25 06:44:04.686424000 █████
Change: 2020-04-26 09:23:47.452255300 █████
 Birth: 2019-12-26 12:34:40.017177300 █████

bballdave025@MY_MACHINE ~
$ stat /
  File: /
  Size: 0               Blocks: 4          IO Block: ██████████  directory
Device: ██████████/██████████   Inode: ██████████  Links: 1
Access: (0775/drwxrwxr-x)  Uid: (██████████/   bballdave025)   Gid: (██████████/Unknown+Group)
Access: 2020-04-26 09:34:23.227577100 █████
Modify: 2020-04-26 09:34:23.227577100 █████
Change: 2020-04-26 12:55:46.658249200 █████
 Birth: 2019-06-25 06:49:31.485205900 █████

bballdave025@MY_MACHINE ~
$ chmod u+w .
chmod: changing permissions of '.': Permission denied

bballdave025@MY_MACHINE ~
$ # It's not going to be very useful like this.

ちなみに、chmod -R u+w /多くのPermission deniedエラーも発生しました。

回復するファイルがある場合、おそらく今がそれを実行できる 2 番目に良いチャンスです。

削除を行う一つの方法は、このアプリのチュートリアルアーカイブ済み)CMD管理者として実行するには管理者権限が必要です。

Windows エクスプローラーでも実行できますが、エクスプローラーを管理者として実行する必要がある可能性があります。私もこのように権限を変更しようとしましたが、うまくいきませんでした。

タイプメニューから検索しcmd、管理者として実行します。下のスクリーンショットを参照してください。

管理者としてCMDを実行する手順

所有権を得る

takeown /r /d y /f C:\cygwin64

このコマンドを構成する2つの単語は「TAKE DOWN」ではなく「TAKE OWN」であることに注目してください。また、このコマンドはおそらく5~20分ほどかかることに注意してください。ほぼ完全なインストールアーカイブ済み)。

次に、全員に完全な権限を付与します。

icacls C:\cygwin64 /t /grant Everyone:F

もう一度、戻ってインストール/再インストールを試みることはできますbashが、今行った操作のセキュリティへの影響が気に入りません。

回復するファイルがある場合、今がおそらくそれを実行する 2 番目に良いチャンスです。つまり、この時点で GUIbashを使用してインストールまたは再インストールする場合setup-x86_64、または Windows ファイル エクスプローラーを使用する場合でも、これが最良のチャンスです。

この Cygwin を削除して、新しくインストールしたほうがよいでしょう。 可能なファイルの回復を試みた場合は、次のコマンドを実行してください。

rmdir /s /q C:\cygwin64

削除後、再インストールする前に、必ず

Windows+ R、次に、およびのフォルダregedit内のすべてのものを削除します。Software\CygwinHKEY_LOCAL_MACHINEHKEY-CURRENT-USER

答え4

  1. Cygwin を実行します:セットアップ-x86_64.exe

  2. 選択する:インストールせずにダウンロード

    これにより、Cygwinターミナルファイルが保存先のフォルダにダウンロードされます。http://cygwin.mirror.constant.com/

    例:C:\宛先フォルダ>http://cygwin.mirror.constant.com/>

  3. 走るまたシグウィン:セットアップ-x86_64.exe次に、以下を選択します。ローカルディレクトリをインストールする、 クリック 、 クリック、 クリック、 それから仕上げる

  4. 次の場所に移動します:http://cygwin.mirror.constant.com/フォルダーには 2 つのサブフォルダーがあります。

    ノアーチ 64ビット

  5. 開ける64ビットフォルダ

  6. 開けるリリースフォルダ

  7. 開けるバッシュフォルダ(圧縮ファイルがあります、例:**bash-4.4.12-

  8. tar.xz** ファイル

    圧縮されたbashファイルを解凍すると、2つのフォルダが表示されます(そしてユーザー)。

  9. 開けるフォルダとコピー翻訳:ファイルに貼り付けるC:\cygwin64\binフォルダ

関連情報