如何为windows中的.sh文件分配执行权限,以便在linux中执行

C g*_*ics 43 linux windows shell file-permissions

这是我的问题,

在Windows中,我正在创建一个zip文件,其中有一个文本.sh文件,应该在Linux中执行.另一端的用户在Linux中打开zip文件并尝试执行.sh文件,但执行权限已经消失.因此用户必须手动完成(如此处所述:添加执行权限.

我怎样才能在Windows中生成.sh可执行文件并将其添加到zip文件中,这样当zip文件在linux中打开时,.sh文件仍保留其执行权限(这样用户无需手动执行)

sam*_*hen 47

据我所知,Linux中的权限系统是以这样的方式设置的,以防止您要完成的任务.

我认为你能做的最好的事情就是给你的Linux用户一个自定义的解压缩单行程序来运行提示符:

unzip zip_name.zip && chmod +x script_name.sh
Run Code Online (Sandbox Code Playgroud)

如果有多个脚本需要授予执行权限,请grant_perms.sh按如下方式编写:

#!/bin/bash
# file: grant_perms.sh

chmod +x script_1.sh
chmod +x script_2.sh
...
chmod +x script_n.sh
Run Code Online (Sandbox Code Playgroud)

(您可以将脚本全部放在chmod的一行上,但我发现在vim和shell脚本命令中更容易使用单独的行.)

现在你的解压缩单行成为:

unzip zip_name.zip && source grant_perms.sh
Run Code Online (Sandbox Code Playgroud)

请注意,由于您使用的source运行grant_perms.sh,它不需要执行权限

  • 这是非常错误的; 没有关于权限系统的设置来打败这个.你是怎么得出这个结论的? (8认同)
  • @itsbruce我期待看到你对这个问题的回答; 我被教导Linux是基于故障安全默认/最小特权模型构建的:如果你建议的话,我会学到新东西. (2认同)
  • 我不认为您了解文件权限的工作原理.正如我在其他地方所说的,所有本机Unix归档工具都保留了文件权限,并将使用正确的参数恢复它们.看一下GNU tar的手册页; 具体来说,** - p**(或** - 相同权限**或** - 保留权限**选项. (2认同)
  • 我想你是想回复我的回答。不过你已经很好地说明了你的情况。直到。 (2认同)

jms*_*ter 7

ZIP文件格式允许存储权限位,但Windows程序通常会忽略它.zip然而,Cygwin上的实用程序确实保留了x位,就像在Linux上一样.如果您不想使用Cygwin,您可以获取源代码并进行调整,以便所有*.sh文件都可以设置可执行位.或者写一个像这里解释的脚本