1974–1975:Ratfor – Brian Kernighan 在其 Ratfor 預處理程序中首次使用 # 表示註釋。這是經過驗證的首次使用。
1976:make – Stuart Feldman 在 make 建置工具中使用 # 作為註解。
1977:awk – # 作為註解字元出現在 awk 語言中。
1978:csh(C shell) – Bill Joy 在 C shell 中使用 # 作為註釋,這是第一個使用 # 的 shell。
1980年代:Bourne shell 與 Shebang(#!) – 當 Dennis Ritchie 將 #! 機制加入 Unix 內核後,後續的腳本語言(如 1987 年的 Perl 和 1991 年的 Python)為了兼容這一機制,也採用了 # 作為註釋符。
https://linux.vbird.org/linux_basic/centos7/0340bashshell-scripts.php
程式內容的說明:
整個 script 當中,除了第一行的『 #! 』是用來宣告 shell 的之外,其他的 # 都是『註解』用途! 所以上面的程式當中,第二行以下就是用來說明整個程式的基本資料。一般來說, 建議你一定要養成說明該 script 的:1. 內容與功能; 2. 版本資訊; 3. 作者與聯絡方式; 4. 建檔日期;5. 歷史紀錄 等等。這將有助於未來程式的改寫與 debug 呢!
把你常做的 事/commands 寫成 shell script .sh 檔案, 就不用一直在 terminal 重寫一些指令
#! 叫做 shebang(也叫 hashbang),中文常說:- Shebang 行
- 解譯器宣告行
- 腳本啟動行
例如:
#!/bin/bash
echo "Hello"意思是:
用/bin/bash來執行這個檔案。
系統看到你執行:
./myscript.sh
其實會自動變成:
/bin/bash ./myscript.sh
#! 到底是什麼?
它是檔案第一行的特殊標記:#!<解譯器路徑>
例如:
#!/bin/sh
#!/bin/bash#!/usr/bin/env bash
#!/usr/bin/env python3
Linux 核心(kernel)看到檔案開頭是
#!,就知道:「這不是二進位程式,要交給後面的解譯器來執行。」
一定需要嗎?
不一定。情況 1:你直接指定解譯器 → 不需要
例如:bash script.sh
或:
sh script.sh
因為你已經明確告訴系統:
用bash執行這個檔案。
所以
#! 可有可無。情況 2:你想直接執行 → 需要
例如:chmod +x script.sh
./script.sh這時 Linux 會看第一行的
#!。如果沒有 shebang,可能會出現:
Exec format error
或用錯 shell 執行。
會影響什麼?
1. 決定用哪個 shell
這很重要。例如:
#!/bin/sh
和:
#!/bin/bash
可能結果不同。
例如這段:
arr=(a b c)
只有 bash 支援。
如果 shebang 是:
#!/bin/sh
可能會報錯:
Syntax error
2. 影響可攜性(portable)
很多人推薦:#!/usr/bin/env bash
而不是:
#!/bin/bash
原因:
有些系統的 bash 不在
/bin/bash,可能在:/usr/local/bin/bash
/usr/bin/env bash 會自動去 PATH 裡找 bash。比較通用。
3. 編輯器會參考它
像 Geany、Visual Studio Code 會看 shebang 判斷語言:例如:
#!/usr/bin/env python3
即使副檔名不是
.py,也可能自動當 Python。4. cron / systemd 會用到
如果排程工具直接執行腳本:/path/to/script.sh
沒有 shebang 可能失敗。
#! 是註解嗎?
有趣的是:對 shell 來說,是。因為:
# 這是註解
所以 shell 看到:
#!/bin/bash
只會當註解。
但在 shell 看到之前,Linux kernel 已經先讀了這一行,把它當成特殊指令。
所以:
- 對 kernel:是啟動指令
- 對 shell:是註解
常見寫法
POSIX shell(最通用)
#!/bin/shBash(常用)
#!/bin/bash更可攜的 Bash(推薦)
#!/usr/bin/env bashPython
#!/usr/bin/env python3Node.js
#!/usr/bin/env node實用建議
如果你寫的是 Bash script,通常建議:#!/usr/bin/env bash如果你每次都這樣執行:
bash script.sh
那 technically 不需要 shebang。
但還是建議加上,因為:
- 清楚標示要用哪個解譯器
- 之後可以直接
./script.sh - 避免別人用錯 shell 執行
- 工具(editor、cron、systemd)比較容易正確辨識
這個腳本的「開啟方式」宣告。
GailLim wrote:
# Uncomment to disable graphical terminal
GRUB_TERMINAL=console
若刪除 #,Grub會呈現純文字;保留 # ,Grub會呈現圖片。
「#」只是「註解」?可有可無?
沒有 # 就變成有意義的指令或設定, 寫錯就會出錯或被忽略不執行
原本
# Uncomment to disable graphical terminal
#GRUB_TERMINAL=console
#GRUB_TERMINAL=console 原本只是註解所以 grub 完全忽略, 視而不見繼續用 預設的graphical GUI
Uncomment 拿掉 #GRUB_TERMINAL=console 前方的# 就變成告訴 grub 要認定 GRUB_TERMINAL=console 這設定啊
Shell 教學
https://www.youtube.com/results?search_query=shell+%E6%95%99%E5%AD%B8
若沒「#」,系統開機直接讀取「/etc/fstab」路徑,以為是掛載指令,當然錯誤,這就是為何當我全刪「#」後,黑底白字跑很久,無法開機的理由。
加上「#」後,等於告訴系統「這是張報表,把它當作Table Header,不要執行它!」
第二段,我曾經整段刪除,沒事,僅僅說明文字。
第三段第一行結構是「# 〈〉〈〉〈〉〈〉〈〉〈〉」,若沒加「#」,系統開機會直接讀這一行,加「#」,等於告訴系統「這一行是表格標題」。
在 Linux 的結構裡,它就像是隱形的〈tr〉〈td〉,若沒這行標題,系統會無法對齊下面的表格欄位,開不了機。
我修改過他人的QSS或CSS,很多註解的文字,一旦刪除,程式卻反而執行不了。那些註解文字,像是「代碼緩衝墊」,或是給特定編譯器識別的暗號。
「#」只是「註解」?沒錯,但在fstab裡,它的「註解」是——這是一張表格喔!!
「#」就像國中生的「參考書」——以為「參考書」只有「參考用」?🤣除非您沒讀過國中。
cruiseton wrote:fstab可以去掉所有的「#」嗎?
#40 樓 用的就是...(恕刪)
AI摘要
不建議直接刪除/etc/fstab中所有的「#」符號。在Linux的/etc/fstab檔案中,「#」符號是用作註解(Comment)的標記。
以下是原因與注意事項:「#」的作用:系統會忽略任何以「#」開頭的行。這通常用於暫時停用某個掛載設定,或者解釋該行配置的用途。
直接刪除的後果:如果您刪除了「#」,系統可能會嘗試掛載該行設定的裝置。如果該裝置不存在、無法存取或配置錯誤,可能會導致系統開機時進入緊急模式(Emergency Mode)或無法開機。
正確的做法:如果您想徹底停用該掛載,請直接刪除整行,而不是只刪除「#」符號。如果您只想停用某行,請在行首加上「#」使其成為註解,確保系統忽略它。
總結:保留「#」符號是為了標註哪些設定是停用的。
若為了清理檔案,直接刪除整行註解是安全的,但將所有註解符號刪除可能會誤啟動錯誤的掛載配置。
小惡魔新聞台
小惡魔市集
關閉廣告
顯示廣告
為提供您更優質的服務,本網站使用cookies。若您繼續瀏覽網頁,即表示您同意我們的cookies政策。 了解隱私權條款


























































































