这两天读了一遍man bash,对一些重要的点做下记录
OPTIONS
bash的option分为两种,即:
1 GNU long options(必须先于短选项出现在命令行)
2 short options
这里重点说下short options,它的来源主要来自3个方面,即:
1 来源于自身
2 来源于set选项(bash的第一套设置)
3 来源于shopt选项(bash的第二套设置)
ARGUMENTS
bash的执行命令来源于三个地方,即:
1 标准输入(-s)
2 字符串(-c)
3 文件(命令行指定文件名)
针对不同的输入来源,$0代表的东西不同
INVOCATION
1 interactive login shell(or non-interactive shell with the --login option)
即,登录shell
它的位置参数$0=-bash
读取配置文件:/etc/profile,~/.bash_profile
2 interactive shell
即,交互shell
读取配置文件:~/.bashrc
3 non-interactively shell
即,非交互shell
用来直接执行脚本文件(或者命令字符串)
读取配置文件:环境变量BASH_ENV里面指定的脚本文件
4 subshell
即,子shell
这是直接forl
这是直接fork生成的子shell,之前的shell都是先fork,然后exec("/bin/bash")
所以,本质上就是一个完全一样的shell copy
这就解释了为什么$$=parent shell的进程ID
COMMENTS
1 non-interactive shell,#是注释
2 interactive shell(interactive_comments on的时候),#是注释
网友评论