繁体   English   中英

在 Windows 7 上使用 git-bash 更新文件权限

[英]Updating file permissions with git-bash on Windows 7

如何在 Windows 7 上使用git-bash更新文件权限?

我尝试了以下但没有成功:

$ ls -al scripts/script.sh
-rw-r--r--    1 myUid   Administ       70 Sep  8 11:24 scripts/script.sh

$ git update-index --chmod=+x scripts/script.sh

$ ls -al scripts/script.sh
-rw-r--r--    1 myUid   Administ       70 Sep  8 11:24 scripts/script.sh

$ chmod +x scripts/script.sh

$ ls -al scripts/script.sh
-rw-r--r--    1 myUid   Administ       70 Sep  8 11:24 scripts/script.sh

您可能在 Windows 上使用 NTFS 或 FAT32,而这些文件系统不支持可执行权限。 相反, cygwin 查看文件名和内容以确定它是否可执行

如果文件名以 .bat、.com 或 .exe 结尾,或者其内容以 #! 开头,则文件被视为可执行文件。

所以你应该确保bash文件以shebang开头(例如#!/bin/bash )。 然后,您应该能够只执行该文件,而忽略ls的权限输出。

如果您正在 Windows 环境中更新部署到 linux 文件系统的脚本,即使它们被允许在本地运行,您可能仍然发现自己需要在推送之前授予执行权限。

从这篇关于在 Windows 上使用 git repo 时更改文件权限的文章:

  1. 在 Windows 上打开像 git-bash 这样的 bash 终端
  2. 导航到要授予执行权限的.sh文件
  3. 使用以下命令检查现有权限:

     git ls-files --stage

    哪个应该返回类似100644 的内容

  4. 使用以下命令更新权限

    git update-index --chmod=+x 'name-of-shell-script'
  5. 再次检查文件权限

    git ls-files --stage

    哪个应该返回类似100755 的内容

  6. 提交更改并推送!

Windows 上的 git bash

您的脚本开头很可能没有“shebang”。 所以 Windows 不知道应该使用哪个二进制文件来运行脚本。 因此,权限被默默地忽略。

例如:

#!/usr/bin/sh

或者

#!/usr/bin/bash

看起来 git-bash 会自动检测到它,因为即使没有 chmod 命令,可执行属性也会被设置。 此外,无法使用 chmod 禁用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM