常見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目錄下的情況