shell基本知識
一、Linux 與 shell
shell(計算機殼層):在電腦科學中,shell 俗稱殼(區別於核),是指為使用者提供操作介面的軟體。它類似於DOS下的 command.com 和後來的 cmd.exe。它接收命令,然後呼叫相應的應用程式。
Linux 的系統結構如下。最內層的是硬體,然後是核心,shell 介於核心與使用者之間。
shell 的功能:接收使用者的輸入,並且解釋使用者的命令;然後將其傳給系統核心,核心再呼叫硬體來操作。
二、常見的shell
- Bourne Shell(/usr/bin/sh 或 /bin/sh):
是一個交換式的命令直譯器和命令程式語言。Bourne shell 可以執行為login shell或者login shell的子shell(subshell)。只有login命令可以呼叫Bourne shell作為一個login shell。此時,shell先讀取/etc/profile檔案和$HOME/.profile檔案。/etc/profile檔案為所有的使用者定製環境,$HOME/.profile檔案為本使用者定製環境。最後,shell會等待讀取你的輸入。
- Bourne Again Shell(/bin/bash):
它用於基於GNU的系統如Linux。大多數的Linux(Red Hat, Slackware, Caldera)都以bash作為預設的shell,並且執行sh時,其實呼叫的是bash。它的特點是免費、功能強大、易用性高。
- C Shell(/usr/bin/csh):
Bill Joy於20世紀80年代早期,在伯克利的加利福尼亞大學開發了C shell。它主要是為了讓使用者更容易的使用互動式功能,並把ALGOL風格的語法結構變成了C語言風格。它新增了命令歷史、別名、檔名替換、作業控制等功能。
- Korn Shell(/usr/bin/ksh):
Bourne shell用來程式設計,C shell用來互動。ksh結合了所有的C shell的互動式特性,並融入了Bourne shell的語法。它還新增了數學計算,程式協作(coprocess)、行內編輯(inline editing)等功能。Korn Shell 是一個互動式的命令直譯器和命令程式語言。
三、執行shell
- 方法一:
#!/bin/bash #指定shell的型別(在指令碼中指定)
chmod +x ./test.sh #使指令碼test.sh具有執行許可權
./test.sh #執行指令碼test.sh
test.sh的指令碼內容:
執行結果:
一定要寫成./test.sh,而不是test.sh。若直接寫成test.sh,Linux系統會去PATH裡尋找有沒有叫test.sh的檔案,而只有/bin、/sbin、/usr/bin、/usr/sbin等在PATH裡,我們的當前目錄通常不在PATH裡,所以寫成test.sh會找不到命令,要用./test.sh告訴系統:就在當前目錄尋找。
- 方法二:
直接在命令列指定shell型別,此時test.sh指令碼中指定的shell為bash會失效。執行結果與方法一相同。
/bin/sh test.sh #指定的shell為Bourne shell
相關文章
- Shell 基本常識
- Shell相關知識
- js 基本知識JS
- DAX 基本知識
- 1、基本知識
- Uboot基本知識boot
- javaweb基本知識JavaWeb
- git基本知識Git
- Vagrant (一) - 基本知識
- 影像的基本知識
- Shell指令碼知識簡述指令碼
- python入門基本知識Python
- Javascript物件的基本知識JavaScript物件
- C++基本知識點C++
- Vuejs基本知識(九)【路由】VueJS路由
- 磁碟的基本知識和基本命令
- Linux shell基礎知識_8(下)Linux
- shell指令碼的基礎知識指令碼
- python中shell執行知識點Python
- es6基本知識整合
- 圖片的基本知識點
- Kotlin Coroutine(協程) 基本知識Kotlin
- 【Clojure 基本知識】小技巧s
- MySQL資料庫基本知識MySql資料庫
- Javascript函式的基本知識JavaScript函式
- 執行緒基本知識點執行緒
- PLC程式設計—基本知識C程式程式設計
- WIFI6 基本知識(二)WiFi
- WIFI6 基本知識(一)WiFi
- shell基礎知識查缺補漏
- Python學習-字串的基本知識Python字串
- flutter【1】-dart語言--基本知識FlutterDart
- Vuejs基本知識(十)【使用樣式】VueJS
- JQuery的一些基本知識jQuery
- Linux基本知識與基礎命令Linux
- linux(基於ubuntu)的基本知識LinuxUbuntu
- C語言指標基本知識C語言指標
- 線性代數常用基本知識整理