新建bash脚本需手动设置执行权限是否属于正常现象?
问题结论
这种情况是完全正常的,属于Linux/Unix类系统的默认权限设计。
背后的设计逻辑
- 系统普通文件的默认创建权限由
umask参数控制,绝大多数桌面/服务器发行版的默认umask值为022,对应普通文件的默认权限为644(即所有者读写、用户组只读、其他用户只读),默认不为任何用户开放执行权限,这是出于安全考虑,避免恶意文件被意外创建后直接执行引发风险。 - Linux系统不依赖文件后缀判断文件类型,
.sh只是方便人工识别的命名后缀,系统不会因为文件带有该后缀就自动赋予执行权限。
简化操作的可选方案
如果你不想每次手动执行chmod +x,可以用以下两种常用方案优化流程:
- 新建文件时直接指定权限,使用命令
install -m 755 /dev/null 你的脚本名.sh,创建出的空文件直接自带执行权限 - 在shell配置文件(如
.bashrc、.zshrc)中添加自定义快捷函数,示例如下:
mkbash() { if [ -z "$1" ]; then echo "请指定脚本名称" return 1 fi touch "$1" chmod +x "$1" vim "$1" # 这里可以换成你常用的编辑器,比如nano、code等 }
配置完成后重载配置文件,之后执行mkbash test.sh即可一步完成创建、加权限、打开编辑的操作。
内容的提问来源于stack exchange,提问作者Abhisek
相关产品推荐
相关产品推荐

