Shell腳本運(yùn)行環(huán)境及基本使用方法
引言
Shell 是一個(gè)用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設(shè)計(jì)語言。
Shell 是指一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過這個(gè)界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。
Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個(gè)典型的圖形界面 Shell。
一、Shell 腳本
Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。
業(yè)界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個(gè)不同的概念。
由于習(xí)慣的原因,簡潔起見,本文出現(xiàn)的 "shell編程" 都是指 shell 腳本編程,不是指開發(fā) shell 自身。
二、Shell 環(huán)境
Shell 編程跟 JavaScript、php 編程一樣,只要有一個(gè)能編寫代碼的文本編輯器和一個(gè)能解釋執(zhí)行的腳本解釋器就可以了。
Linux 的 Shell 種類眾多,常見的有:
- Bourne Shell(/usr/bin/sh或/bin/sh)
- Bourne Again Shell(/bin/bash)
- C Shell(/usr/bin/csh)
- K Shell(/usr/bin/ksh)
- Shell for Root(/sbin/sh)
三、第一個(gè)shell腳本
打開文本編輯器(可以使用 vi/vim 命令來創(chuàng)建文件),新建一個(gè)文件 test.sh,擴(kuò)展名為 sh(sh代表shell),擴(kuò)展名并不影響腳本執(zhí)行,見名知意就好,如果你用 php 寫 shell 腳本,擴(kuò)展名就用 php 好了。
輸入一些代碼,第一行一般是這樣:
#!/bin/bash echo "Hello World !"
#! 是一個(gè)約定的標(biāo)記,它告訴系統(tǒng)這個(gè)腳本需要什么解釋器來執(zhí)行,即使用哪一種 Shell。
echo 命令用于向窗口輸出文本。
運(yùn)行 Shell 腳本有兩種方法:
1、作為可執(zhí)行程序
將上面的代碼保存為 test.sh,并 cd 到相應(yīng)目錄:
chmod +x ./test.sh #使腳本具有執(zhí)行權(quán)限 ./test.sh #執(zhí)行腳本
注意,一定要寫成 ./test.sh,而不是 test.sh,運(yùn)行其它二進(jìn)制的程序也一樣,直接寫 test.sh,linux 系統(tǒng)會(huì)去 PATH 里尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的當(dāng)前目錄通常不在 PATH 里,所以寫成 test.sh 是會(huì)找不到命令的,要用 ./test.sh 告訴系統(tǒng)說,就在當(dāng)前目錄找。
2、作為解釋器參數(shù)
這種運(yùn)行方式是,直接運(yùn)行解釋器,其參數(shù)就是 shell 腳本的文件名,如:
/bin/sh test.sh /bin/php test.php
這種方式運(yùn)行的腳本,不需要在第一行指定解釋器信息,寫了也沒用。
ubuntu(linux)下 source、sh、bash、./ 執(zhí)行腳本的區(qū)別是什么?
1. source命令用法:
source FileName
作用:在當(dāng)前 bash 環(huán)境下讀取并執(zhí)行 FileName 中的命令。該 filename 文件可以無 "執(zhí)行權(quán)限"。
注:該命令通常用命令 . 來替代。
2. sh、bash的命令用法:
sh FileName 或 bash FileName
作用:打開一個(gè)子 shell 來讀取并執(zhí)行 FileName 中命令。該 filename 文件可以無 "執(zhí)行權(quán)限"。
注:運(yùn)行一個(gè)shell腳本時(shí)會(huì)啟動(dòng)另一個(gè)命令解釋器。
3、./的命令用法:
./FileName
作用: 打開一個(gè)子 shell 來讀取并執(zhí)行 FileName 中命令,該 filename 文件需要 "執(zhí)行權(quán)限"。
注:運(yùn)行一個(gè) shell 腳本時(shí)會(huì)啟動(dòng)另一個(gè)命令解釋器。
以上就是Shell腳本運(yùn)行環(huán)境及基本使用方法的詳細(xì)內(nèi)容,更多關(guān)于Shell腳本運(yùn)行環(huán)境的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
shell編程時(shí)出現(xiàn):未預(yù)期的符號?`then'?附近有語法錯(cuò)誤?或者?:?行?:?`then&
這篇文章主要介紹了shell編程時(shí)出現(xiàn):未預(yù)期的符號?`then'?附近有語法錯(cuò)誤?或者?:?行?:?`then'問題,本文給大家介紹的非常詳細(xì),需要的朋友參考下2022-12-12shell腳本監(jiān)控系統(tǒng)負(fù)載、CPU和內(nèi)存使用情況
這篇文章主要介紹了shell腳本監(jiān)控系統(tǒng)負(fù)載、CPU和內(nèi)存使用情況,本文分別給出監(jiān)控服務(wù)器系統(tǒng)負(fù)載情況、監(jiān)控系統(tǒng)cpu使用情況、、監(jiān)控系統(tǒng)內(nèi)存情況、監(jiān)控系統(tǒng)交換分區(qū)swap使用情況的腳本,需要的朋友可以參考下2014-12-12分享一個(gè)實(shí)用的iptables腳本(各種過濾寫法參考)
這篇文章主要介紹了分享一個(gè)實(shí)用的iptables腳本(各種過濾寫法參考),需要的朋友可以參考下2014-04-04bash shell命令行選項(xiàng)與修傳入?yún)?shù)處理
本文介紹了bash shell命令行參數(shù)與命令行選項(xiàng)的操作方法,有關(guān)shell 命令行參數(shù)的實(shí)例教程,有需要的朋友參考下。2014-04-04