項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 search-input 尚未註冊或是沒有一個 view.php 檔案.

【Bash 基本語法 #2】什麼是 #!/bin/bash, #!/bin/sh,為什麼要加在 script 前面 (問題解決:sh, bash 的不同)

前言

撰寫 bash 的 程式碼可以幫助我們自動化完成一連串的指令,
(或者我們也會說這是一種「腳本」,會自動完成一些事情)

以下的功能,建立在 「chmod +x」 的條件下才有用
如果沒有下「chmod +x」,使變成 .sh 執行檔

  • 則會有以下兩種情況:

./test.sh:會以預設的 shell 執行,例如 sh (dash)、或有安裝 zsh, fish 的話
(可能會有語言不通無法執行的問題,即使有加 #!/bin/bash)
bash ./test.sh:指定 bash 的語言,來解釋執行腳本
zsh ./test.sh:指定 zsh 的語言,來解釋執行腳本,其他以此類推

作為宣告解釋這份腳本的語言使用

有時候我們看到任何一份 “.sh” 開頭的檔案,
第一行都會寫

#!/bin/bash

這其實就是在宣告,這份腳本的執行,
請用 bash 的語言來解釋他,

sh 系列的語言有很多種,雖然大同小異,
但實際上功能依然有些微的差別,
例如有些 bash 有的指令,換成 zsh 可能就有不同的寫法。

影響

如果我們沒有加入這行指定使用的 shell script,
大部分情況可能都沒有問題,
(那是因為語言共通性高的緣故),
但碰到一些語言不共通的時候,例如 sh, bash

sh 其實是 dash 的縮寫,讀者有興趣的話可以看下方的說明。

我們可以透過以下指令來看現在電腦中有哪些可使用的 shell script

cat /etc/shells

確認現在 terminal 使用的 shell script

echo $SHELL

科普類

sh 其實是某一個語言的簡稱

我們可以透過以下指令來看,現在是用什麼來解釋 sh 這個語言

ls -l /bin/sh

我們可能得到結果是:

lrwxrwxrwx 1 root root 4  八  13  2020 /bin/sh -> dash

表示 sh 其實是 dash 的 soft link (捷徑),並不等同於 bash

這也是為什麼有時候 「sh ./test.sh」、 「bash ./test.sh」會有一個可執行,
另外一個不可執行的原因
延伸閱讀:[Linux] sh 和 bash 之間的差異

Reference

⭐Linux 指令 相關文章整理 (此表最後手動整理時間:2022/10/5) ⭐:
⭐Linux 終端機 (terminal) 操作、shell 篇⭐:
1.(terminal指令 常用總整理)【Linux】linux/ubuntu/mac 基礎終端機 (terminal) 指令 & 基礎知識總整理,初學者/新手 必須知道的基礎指令 & 基礎知識大全(持續更新)
2.(terminal快速鍵 常用總整理)【Linux】linux/ubuntu/mac 基礎終端機 (terminal) 快速鍵/小技巧,初學者/新手 必須知道的一些實用功能!(持續更新)
3.【Linux】好用的終端機管理工具 – tmux (類似 screen 的進階版)
4.【Linux】終端機小技巧 – default start screen treminal,無縫接軌任何電腦,繼續使用同一個 terminal 殘留下來的訊息
5.【Linux】z,zim 套件中最快搜尋指定資料夾的套件,以後不用 cd 之後再慢慢 tab 尋找路徑了!
6.【Linux】zim (+zsh) – 也許是目前最快也最實用的 linux terminal 與套件,直接把終端機開發效率飆升到最高
7.【Linux】終端機小技巧 – sudo 補上快速完成 (終端機指令小祕技)
8.【Windows】也許是 windows 上最貼近 linux 的 terminal,安裝 fluent terminal,在 windows 上使用 zsh (oh-my-zsh)
9.【Linux】透過 screen 讓 terminal 內的工作內容可以無縫接軌到任何電腦 (儲存當下 terminal 內容),並可以繼續操作
⭐Linux 基礎指令篇⭐:
1.【嗡嗡精選】ubuntu 個人自用小抄 (last update: 2022/6/24)
2.【Linux】(作業系統基礎知識) 簡單理解「相對路徑」與「絕對路徑」,程式設計 初學者/新手 必須知道的路徑知識總整理
3.【Linux】linux ubuntu 中利用 mkdir 建立資料夾 相關參數總整理 (必定建立資料夾、修改資料夾權限 777)
4.【Linux】linux ubuntu 使用 terminal (終端機) 關機 shutdown、重新開機 reboot 的方法
5.【Linux】小知識 source 與 bash 執行 script 的差別
6.