Shell-Script

Unix shell 腳本的文件副檔名

  • October 17, 2019

在維基百科上,.sh的文章說:

有關 .sh 文件副檔名類型,請參閱Bourne shell

其他 unix shell 怎麼樣?

我知道在文件中 使用shebang來指示執行的解釋器,但我想知道:

  • 文件副檔名與沒有文件副檔名的優缺點是什麼?

我只會稱其可移植的(並且希望.sh移植的)。

否則,我認為隱藏語言會更好。細心的讀者無論如何都會在 shebang 行中找到它。(在實踐中,.bash.zsh等…後綴很少使用。)

我會說不存在文件副檔名的“良好實踐”,嚴格來說是技術性的: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”後綴標記腳本對認知或組織有好處。

引用自:https://unix.stackexchange.com/questions/31760