blu*_*lds 24 git cygwin windows-7-x64 git-bash
如何git-bash
在Windows 7上更新文件权限?
我试过以下但没有成功:
$ 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
Run Code Online (Sandbox Code Playgroud)
Yog*_*ogu 50
您可能在Windows上使用NTFS或FAT32,并且这些文件系统不支持可执行权限.相反,cygwin查看文件名和内容以确定它是否可执行:
如果文件名以.bat,.com或.exe结尾,或者其内容以#!开头,则认为文件是可执行的.
所以你应该确保bash文件以shebang(例如#!/bin/bash
)开头.然后,您应该能够只执行该文件,而忽略该权限输出ls
.
Sht*_*fan 11
您的脚本开头很可能没有“shebang”。因此 Windows 不知道应该使用哪个二进制文件来运行该脚本。因此,权限会被默默地忽略。
例如:
#!/usr/bin/sh
Run Code Online (Sandbox Code Playgroud)
或者
#!/usr/bin/bash
Run Code Online (Sandbox Code Playgroud)
看起来 git-bash 会自动检测到它,因为即使没有 chmod 命令,可执行属性也会被设置。此外,无法使用 chmod 禁用它。
如果要在已部署到linux文件系统的Windows环境中更新脚本,即使允许它们在本地运行,您仍然可能会发现自己需要在推入之前授予执行权限。
从这篇关于在Windows上使用git repo时更改文件权限的文章开始:
.sh
要授予执行权限的文件使用以下命令检查现有权限:
git ls-files --stage
Run Code Online (Sandbox Code Playgroud)
应该返回类似100644的东西
使用以下命令更新权限
git update-index --chmod=+x 'name-of-shell-script'
Run Code Online (Sandbox Code Playgroud)再次检查文件权限
git ls-files --stage
Run Code Online (Sandbox Code Playgroud)
哪个应该返回类似100755
提交更改并推送!
归档时间: |
|
查看次数: |
16427 次 |
最近记录: |