web-dev-qa-db-ja.com

バッチファイルをbash / cygwinで実行可能ファイルとしてマークするにはどうすればよいですか?

Windows 7環境でのエクスペリエンスを向上させるために、cygwinをインストールし、コマンドラインインターフェイスツールとしてminttyを使い始めました。これは素晴らしいことであり、UNIX環境での作業でより生産的な日々に戻ることができます。

しかし、私が正しく機能していないように見えるという厄介なことが1つあります。バッチファイル(つまり、*。bat)は、コマンドラインでオートコンプリートされません。また、ls --colorが使用されている場合、適切な色で表示されません。私はこれを(私が思うに)batファイルがrw-r--r--として表示されているという事実まで追跡しました。コマンドラインから./run_my_batch_file.batのようなことを行うと、バッチファイルは正しく実行されますが、完全なファイル名を入力する必要があります。そうしないと、オートコンプリートで取得されません。

'chmod 750'(および他のさまざまなファイルモード)を実行して、バッチファイルを 'x'ビットに変更しようとしましたが、モードビットは変更されませんでした。これは、ローカルドライブを「noacl」オプションでマウントしているという事実に起因すると確信しています。これが私のfstabからの関連行です:

none /cygdrive cygdrive binary,posix=0,user,noacl 0 0

'noacl'を入れないと、ファイルモードビットがすべて台無しになってしまうからです。これは、「noacl」パラメーターのないリストの例です。

-r-x------+ 1 Administrators Domain Users 209K Jul 18 16:46 some.dll
-rwx------+ 1 Administrators Domain Users 867K Aug 22 11:21 binary_filea
-rwx------+ 1 Administrators Domain Users 736K Aug 28 18:02 binary_fileb
-rwx------+ 1 Administrators Domain Users 736K Aug 28 17:43 binary_filec
-rwx------+ 1 Administrators Domain Users  14K Jan 21  2010 cache_00.bak
-r-x------+ 1 Administrators Domain Users 354K Jun  6 22:42 cdb.exe
-rwx------+ 1 Administrators Domain Users   22 Mar 14 08:05 cleanup_scratch_folder.bat
drwx------+ 1 Administrators Domain Users    0 Mar  3 14:59 code
-rwx------+ 1 Administrators Domain Users 1.8K Aug 12 14:34 config.txt
-rwx------+ 1 Administrators Domain Users   52 Aug 28 19:05 console_history
-rwx------+ 1 Administrators Domain Users 3.8M Aug 23 09:46 copy_files.bat

(上記のディレクトリリストは、ローカルNTFSファイルシステムである私の/ cygdrive/dドライブからのものであることに注意してください)。それはかなりめちゃくちゃに見えたので、「noacl」マウントオプションを使用して、ディレクトリ内のファイルの正確なファイルモードを取得しました。

最後の注意点-私は完全なbash完了パッケージをインストールしています。完了パッケージの1つを変更して、必要なものの少なくとも一部(バッチファイルのオートコンプリート)を取得できるかどうかを簡単に確認しましたが、そこに関連するものは見つかりませんでした。

だから私の質問は、バッチファイルファイルモードを適切に変更して「x」を含め、それらで適切なbashコマンドライン補完を取得できるようにすることができます(実行可能ファイルであるため、適切なディレクトリカラーリングを取得できます)。オートコンプリートはより重要なFWIWです。

ありがとう。

4
Mark

あなたの質問に対する答えはわかりませんが、役立つ可能性のあることがいくつかあります。

  • PATHEXT環境変数に.BATが含まれていることを確認してください。
  • noaclオプションについて読む ここnoaclを削除して、実際の権限を正しく取得するために時間を費やしたほうがよいようです。
  • cygwinメーリングリスト で質問してください。あなたの質問にほぼ確実に答えることができる多くの専門家がそこにいます。
2
Andrew Schulman

noaclオプション(Cygwinの外部に存在する唯一の正しいオプション)を使用する場合は、バッチファイルの最初の行として単一のコロン:を追加します。

公式ドキュメントによると:

特定の拡張子(.exe、.com、.lnk)で終わるファイルは、実行可能であると見なされます。最初の2文字が「#!」、「MZ」、または「:\ n」であるファイルも実行可能と見なされます。

0
gavenkoa