常见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来适配某些操作系统中bash并不安装在/bin目录下的情况