新建shell脚本运行提示权限不足,如何让所有协作者无需单独授权即可执行?
解决方案
下面提供3种可落地的方案,按优先度排序:
方案1:提交脚本执行权限到Git(最推荐)
Git本身支持跟踪文件的可执行权限位,只要你本地给脚本赋予执行权限后正常提交推送到远程仓库,其他协作者拉取代码时会自动继承权限,无需手动修改:
- 本地给两个脚本添加执行权限:
chmod +x scripts/extract.sh scripts/compile-languages.sh - 查看Git是否识别到权限变更,执行如下命令可以看到对应脚本的权限位:
git ls-files --stage | grep scripts/
正常识别到执行权限的输出结果中,脚本的权限标识为100755(普通无执行权限的文件为100644) - 直接提交变更并推送到公共代码库即可。
方案2:修改package.json脚本调用方式
不需要修改文件权限,也不用调整Git配置,只需在原有脚本前加sh命令,由shell解释器直接读取脚本内容执行,跳过对脚本本身的可执行权限校验:
"scripts": { "extract": "sh scripts/extract.sh", "compile:languages": "sh scripts/compile-languages.sh" }
Windows环境下只要用户安装了Git Bash等支持sh命令的终端,也可以正常执行。
方案3:通过postinstall钩子自动赋权
如果以上两种方案都不适用,可以添加npm/yarn的安装后钩子,每次安装依赖时自动给脚本添加执行权限:
"scripts": { "extract": "scripts/extract.sh", "compile:languages": "scripts/compile-languages.sh", "postinstall": "chmod +x scripts/*.sh" }
这个方案对Windows环境兼容较差,仅推荐团队成员都使用macOS/Linux开发时使用。
内容的提问来源于stack exchange,提问作者kastaplastislife
相关产品推荐
相关产品推荐

