背景:[.bat]ファイルを書き込もうとしているので、ダブルクリックするとbashスクリプトが取得されます呼び出されました。 bashスクリプトは、GPU/CPU温度を監視するいくつかのWindows GUIアプリを起動します。 cygwin v1.7.7-1(本日ダウンロード)とWindows 7の新規インストールを行いました。
コード:monitor-temps.bat:
C:\cygwin\bin\bash.exe ~/bin/monitor-temps.bash
pause
コード:monitor-temps.bash:
#!/usr/bin/bash
"/cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe" &
出力:[.bat]ファイルをダブルクリックすると、次のようになります。
C:\Users\michael\Desktop>C:\cygwin\bin\bash.exe ~/bin/monitor-temps.bash
C:\Users\michael\Desktop>pause
Press any key to continue . . . /home/michael/bin/monitor-temps.bash: line 2: /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe: Permission denied
ディレクトリにcdして手動でアプリケーションを実行しても、同じアクセス権エラーが発生します。
権限:Linuxでの権限の問題に関する私の経験から、私は自分がそうだと思うユーザーであり、ファイルには期待される権限があります:
$ whoami
michael
$ ls -l GPU*
-rwx------+ 1 michael None 890720 2010-12-01 19:23 GPU-Z.0.4.8.exe
質問:誰かがこれを修正する方法を知っていますか?何か不足していますか?
開発者として、私はショートカットを使用して、Windows環境でLinuxと同様に動作するコマンドラインインターフェイス(CLI)を提供し、ファイルをuntarしようとして同じ問題に遭遇しました。
修正は、ショートカットを「管理者として実行」に設定することでした。
この方法を使用してCygwin環境にアクセスしている場合は、ショートカットのプロパティに移動し、[詳細設定]ボタンを選択して[管理者として実行]のオプションを取得し、ボックスをチェックして[OK]をクリックします。そして、あなたは行く!ショートカットを作成して上記を実行することで、バッチファイルでこれを実行するように設定することもできます。
お役に立てば幸いです。
ディレクトリまたはファイルのアクセス許可を変更する必要があると思います。ファイルまたはディレクトリの権限を変更したい場合は、コードにフルパスを追加する必要があります。
C:\ yourDirectoryのcocos2d-xフォルダーのアクセス許可を変更する場合のように(私はWindowsを使用していますが、Macでは/
の代わりに \
)cygwinコンソールでコードを記述します。
chmod -R 775 /cygwindrive/c/yourDirectory
cat /proc/mounts
またはmount
を使用してマウントテーブルを確認し、/
、/usr/bin
、/usr/lib
からのすべてのマウントポイントにnoacl
フラグがあることを確認します。見つからない場合は、/etc/fstab
を修正して再起動します。 (再起動すると、ルートマウントポイントのnoacl
フラグが同期され、再起動せずに同じことができるかどうかわかりません)。
ファイルに対するicaclsの出力で、NULL SIDレコードおよびその他の奇妙なレコードを確認してください。それらはCygwinのPOSIX ACL変換層による書き込みで追加されたように見えます(/ etc/fstabで "noacl"を使用するとそれを無効にすることができますが、損傷はすでに行われています)。
含まれている親にNULL SIDレコードがあった場合、ファイル上でWindows ACLをリセットするだけでは不十分な場合があります。走らなければならない
icacls c:\cygwin64 /reset /t /l /c
コマンドプロンプトから、各ファイルとディレクトリのWindows ACLから無関係なレコードを削除します。
pdate他のコマンドは、所有権をリセットし、デフォルトのACLを削除して、変更前後の既知のバイナリのACLを表示します。
set croot=c:\cygwin64
icacls %croot%\bin\ls.exe
%croot%\bin\getfacl /bin/ls
takeown /F %croot% /R /D Y > nul
icacls %croot% /reset /T /C /L /Q
icacls %croot%\bin\ls.exe
%croot%\bin\getfacl /bin/setfacl
%croot%\bin\getfacl /bin/find
%croot%\bin\setfacl -bk /bin/find
%croot%\bin\find -P / -xdev -exec /bin/setfacl -bk "{}" +
icacls %croot%\bin\ls.exe
%croot%\bin\getfacl /bin/ls
これを修正する最も簡単な方法は次のとおりです。
-rwx ------ +が問題である可能性があります。一部の非表示のACLでは、xが禁止されている場合があります。次に、setfaclを使用してACLをリセットします。
$ cat >/tmp/faclx <<EOF
user::rwx
group::r--
mask:rwx
other:r--
EOF
$ setfacl -f /tmp/faclx /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe
または、昇格した権限が必要です。
$ cygstart --action=runas /cygdrive/c/Users/michael/Desktop/apps_and_drivers/GPU-Z.0.4.8.exe
私はこの問題を抱えており、cd
で、作成した(パッケージ化された、または再パッケージ化された)ボックスを含むディレクトリに修正しました。次にvagrant box add <file.box> --name <name>
。 PATHは問題を修正し、失敗させると思います。次に、vagrant box list
で再確認します。それから私はmkdir coolbox; cd coolbox
。次に、vagrant init <name>
を実行すると、すべて魔法のように表示されます。
git bash、次のようなコマンドを実行:cmd "/C postgresql-10.5-2-windows-x64.exe --unattendedmodeui minimal --mode unattended --servicename 'postgreSQL'"