shell基本概念和環境


參考:
https://www.runoob.com/linux/linux-shell.html
https://blog.csdn.net/LJFPHP/article/details/78292943
https://www.cnblogs.com/EasonJim/p/8308476.html
https://blog.csdn.net/qq_23143555/article/details/80266937
https://blog.csdn.net/austin_zhou001/article/details/46591169

什么是shell

shell是一個用C語言編寫的程序,它是用戶使用Linux的橋梁。shell翻譯成殼的意思,shell相當於包裹着linux內核的外殼,它提供了一個界面,用戶通過這個界面可以訪問linux操作系統內核的服務,在這個界面中可以利用linux命令對操作系統發出相關指令。

什么是shell腳本

Shell腳本(shell script),是一種為 shell 編寫的腳本程序。
業界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。

shell腳本和Linux命令

shell腳本和命令行都能操作linux,但是shell是面向過程的,相當於有了一定的邏輯和過程,而命令行只是單一的操作。

shell腳本可以通過其條件語句和循環語句等,把一系列linux命令結合在一起來實現一些較為復雜的功能,形成一個相當於面向過程的程序。

簡單總結,shell腳本就是把一大串linux命令寫在一個腳本文件中按照一定的邏輯執行。

shell環境

Shell 編程跟 JavaScript、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了

Linux 的 Shell 種類眾多 ,常見的有:

Bourne Shell(/usr/bin/sh或/bin/sh)

Bourne Again Shell(/bin/bash或/usr/bin/bash)

C Shell(/usr/bin/csh)

K Shell(/usr/bin/ksh)

Shell for Root(/sbin/sh)

Bourne Again Shell(Bash)在日常工作中被廣泛使用,Bash 是大多數Linux 系統默認的 Shell

在一般情況下,人們並不區分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同樣也可以改為 #!/bin/bash。

每個bash腳本文件前的#! 告訴系統其后路徑所指定的程序即是解釋此腳本文件的 Shell 程序。

#!/usr/bin/env bash和#!/usr/bin/bash

#!/usr/bin/env bash #在不同的系統上提供了一些靈活性。

#!/usr/bin/bash #將對給定的可執行文件系統進行顯式控制。

通過/usr/bin/env運行程序,用戶不需要去尋找程序在系統中的位置(因為在不同的系統,命令或程序存放的位置可能不同),只要程序在你的$PATH中;
通過/usr/bin/env運行程序另一個好處是,它會根據你的環境尋找並運行默認的版本,提供靈活性。不好的地方是,有可能在一個多用戶的系統中,別人在你的$PATH中放置了一個bash,可能出現錯誤。

大部分情況下,/usr/bin/env是優先選擇的,因為它提供了靈活性,特別是你想在不同的版本下運行這個腳本;而指定具體位置的方式#!/usr/bin/bash,在某些情況下更安全,因為它限制了代碼注入的可能。

可能在一些系統上/usr/bin/bash沒有,而/bin/bash則一定存在的。所以/bin/bash是顯示指定的優先選擇。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM