これが私の問題です
Windowsでは、Linuxで実行されることになっているテキスト.shファイルがあるZipファイルを作成しています。反対側のユーザーは、LinuxでZipファイルを開き、.shファイルを実行しようとしますが、実行許可は失われます。そのため、ユーザーは手動で行う必要があります(ここで説明するように: 実行権限を追加 。
Windowsで.sh実行可能ファイルを作成してZipファイルに追加すると、LinuxでZipファイルを開いたときに.shファイルの実行権限が保持されます(ユーザーが手動で実行する必要がなくなります)。
私の知る限り、Linuxの許可システムは、あなたが達成しようとしていることを正確に防ぐように設定されています。
あなたができる最善のことは、プロンプトで実行するカスタムの解凍ワンライナーをLinuxユーザーに与えることだと思います:
unzip Zip_name.Zip && chmod +x script_name.sh
実行許可を与える必要があるスクリプトが複数ある場合は、次のようにgrant_perms.sh
を記述します。
#!/bin/bash
# file: grant_perms.sh
chmod +x script_1.sh
chmod +x script_2.sh
...
chmod +x script_n.sh
(chmodの場合、スクリプトをすべて1行に配置できますが、vimおよびシェルスクリプトコマンドで作業する方が簡単であることがわかりました。)
そして今、あなたの解凍ワンライナーは次のようになります:
unzip Zip_name.Zip && source grant_perms.sh
source
を使用してgrant_perms.sh
を実行しているため、実行許可は必要ないことに注意してください。
Zipファイル形式では許可ビットを保存できますが、Windowsプログラムは通常それを無視します。ただし、CygwinのZip
ユーティリティは、Linuxの場合と同様にxビットを保持します。 Cygwinを使用したくない場合は、ソースコードを取得し、すべての* .shファイルが実行可能ビットセットを取得するように調整できます。または、説明されているようなスクリプトを記述します here