Shell總結01-Shell直譯器

ElfCafe發表於2020-06-09

常見Shell直譯器種類

就像不同地區有不同方言一樣,不同的Linux/Unix系統使用著不同型別的shell,其中sh是UNIX上的最基本的shell,遵循POSIX介面規範

作業系統 預設shell 是否相容sh
Solaris sh
HP-UX sh
AIX ksh
Linux bash
FerrBsd csh
Osx zsh

大部分UNIX商業發行版中預設的是Bourne shell,儘管功能和特性都不多,但是在多種Unix和Linux上仍然存在。ksh,csh,bash這些後輩們也都儘量保證了對祖先sh的相容。

檢視當前Shell直譯器

$ echo $SHELL
/bin/bash

檢視系統支援Shell直譯器

$ cat /etc/shells 
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

切換系統當前預設的Shell直譯器

$ chsh

關於首行#!的理解

指令碼檔案首行#!(sha-bang)一方面標誌著指令碼檔案的magic number為指令碼檔案型別,另一方面系統此指令碼檔案需要使用何種命令直譯器來

#!/bin/sh            --使用sh來解釋執行
#!/bin/bash          --使用bash來解釋執行
#!/bin/python        --使用python來解釋執行
#!/bin/perl          --使用perl來解釋執行
#!/bin/env bash      --使用env來適配不同某系linux版本的中bash不在/bin目錄下的情況

相關文章