Ame*_*ina 54 scripting conventions shell-script filenames files
在维基百科上,.sh的文章说:
有关 .sh 文件扩展名类型,请参阅Bourne shell。
其他unix shell怎么样?
我知道在文件中 使用shebang来指示要执行的解释器,但我想知道:
Sté*_*nez 42
我只会调用旨在便携的.sh东西(希望是便携的)。
否则我认为隐藏语言更好。细心的读者无论如何都会在shebang行中找到它。(在实践中,.bashor.zsh等……很少使用后缀。)
Bru*_*ger 27
我会说不存在文件扩展的“良好实践”,严格来说是技术性的:Unix/Linux/*BSD 文件系统本身不支持扩展。您所说的扩展名只是单个文件名的后缀。这与 VM/CMS、VMS、MS-DOS 和 Windows 文件系统和操作系统不同,其中 inode-moral-equivalent 中的一个特殊位置是为扩展保留的。
那个小小的咆哮现在结束了,我认为在 shell 脚本文件名上添加“.sh”或“.ksh”或“.bash”后缀有点愚蠢。程序就是程序:区分执行的内容没有任何好处。没有 unix 或 linux 或任何内核仅仅因为文件名后缀就决定在某个文件上调用解释器。这一切都是由#!文件开头的行或其他一些“幻数”字节序列完成的。事实上,根据文件名“扩展名”决定执行什么是使 Windows 成为恶意软件磁铁的因素之一。看看有多少 Windows 恶意软件诈骗涉及名为“something.jpg.exe”的文件——默认情况下,较新的 Windows 不显示“.exe”扩展名,并鼓励用户双击“
无论如何,您可能认为的直接命令通常是一个 shell 脚本。有时候cc一直是sh-script,firefox是sh-script,startx是sh-script。我认为用“.sh”后缀标记脚本不会带来认知或组织上的好处。
小智 15
作为一个在多种 finix 环境中工作过的人,我不得不用各种各样的 shell 进行编写。信不信由你,跨平台,shell 是不一样的。因此,如果您在多个 shell 中维护您的个人库(必要时),使用扩展来标识 shell 会非常有帮助。这样,当您移动到另一个平台并且 shell 略有不同时,您就知道要针对哪些脚本进行修改。.sh .ksh .bsh .csh ...
您不应为可执行文件使用扩展名,因为它们不可互换。想象一下,你有一个 shell 脚本a.sh,然后用 python 重写a.py,你现在必须改变每个调用你脚本的程序,你已经泄露了实现细节。
Mircosoft 的 Windows 中的整个文件扩展名是一团糟:例如,可能是a.audio, b.audio, c.audio、是a.mp3, b.wav, c.ogg和d.picture, e.picture, f.picture是d.jpeg, e.png, f.gif。大多数时候我们并不关心音频或图片的格式。我们还必须花很长时间教新用户所有文件扩展名。
正如您所说,Unix 文件扩展名纯粹是信息。你只需要你的脚本有一个正确的shebang并且是可执行的。
您可以没有扩展名或使用.sh.
无论使用何种 shell(csh、tcsh、bash、sh...),我个人都使用以下约定:
.sh对经典段子,从低到高档次。| 归档时间: |
|
| 查看次数: |
118413 次 |
| 最近记录: |