簡體   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