POSIX shebang (#!/bin/sh) 在將文件採購到一個文件時會導致問題,無論是實際的還是理論上的問題?
我最近開始以更結構化的方式開發我的 Linux POSIX shell 腳本。
讓我解釋:
**程式碼$$ A $$**由一些程式碼獲取
$$ B $$,只是一些最小的例子:
#!/bin/sh # REQUIREMENTS # none # METHODS (public) # none; this file when sourced sets up basic tput colors, if available ...
**程式碼$$ B $$**正在執行,下面是一些最小的範例:
#!/bin/sh # REQUIREMENTS . /home/username/Development/sh/functions/func-color_support # METHODS (public) print_error () # this prints custom heading and a given error message { ... }
我最初沒有意識到,因為它在最近版本的 Bash 和 Dash 中執行良好,我
#!/bin/sh
每次獲取一些函式文件時都在複製 shebang ( )。我在使用自編譯 ShellCheck 的 VS Code 中工作,我添加 shebang 的明顯原因自然是想要編輯和更新函式,而不必每次都更改語法熒光筆。因此我的問題如下:
shebang(
#!/bin/sh
) 的重複是否違反了任何 POSIX shell 程式規則或準則?此外,POSIX shebang (#!/bin/sh
) 的重複是否會在將文件源化為一個文件時導致問題,無論是實際的還是理論上的問題?我昨天在 StackOverflow 上發布了這個但仍然沒有答案,但這個評論似乎很有希望:
- 請參閱此處的2.1.1 ,引用:
如果 shell 命令文件的第一行以字元“#!”開頭,則結果未指定。
shebang (#!/bin/sh) 的重複是否違反了任何 POSIX shell 程式規則或指南?
我不相信,不。查看
dot
同一頁面上的定義:shell 將在目前環境中執行來自文件的命令。
source (
dot
) 文件*的第一行不是 shell 命令文件的第一行,*因為我們只是將它們添加到目前環境中。因此,我認為您擔心“如果 shell 命令文件的第一行以字元“#!”開頭,則結果未指定。 ”不適用。此外,POSIX shebang (#!/bin/sh) 的重複是否會導致問題,無論是實際還是理論上?
我自己從未見過這樣的問題。在這種情況下,這
#
只是一個註釋標記。