版权声明:本文章参考了《鸟哥的Linux私房菜》、《Linux命令手册》、《Linux命令大全》以及《Linux man pages》。未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!
1 shell的概念
shell就是向用户提供操作系统的接口。
系统支持的shell存放在/etc/shells
文件中。
Bash shell的特点:
- 命令历史——
~/.bash_history
记录的是此次登入以前所执行过的指令, 而此次登入所执行的指令都被暂存在内存中,当你成功的注销系统后,该指令记忆才会记录到~/.bash_history
当中。
- TAB键命令与文件补全
- [Tab] 接在一串指令的第一个字的后面,则为命令补全;
- [Tab] 接在一串指令的第二个字以后时,则为『文件补齐』!
- 命令别名
- alias new_commad=’old_commad’——用新命令名取代原命令名
alias
——查看当前命令别名。- 工作控制、前景背景控制
- shell脚本
- 支持通配符
2 shell环境配置
2.1 欢迎信息与登陆提示
本地登陆时欢迎信息记录在/etc/issue
中,telnet登陆时欢迎信息记录在/etc/issue.net
中。支持特殊代码。
登陆后的提示信息记录在/etc/motd
中。不支持特殊代码。
特殊代码 | 含义 |
---|---|
\4或\4{interface} | 将IPv4地址插入指定的网络接口(例如\ 4 {eth0}),如果未指定接口参数,则选择第一个完全配置的接口。如果未找到任何已配置的接口,则返回到机器主机名的IP地址。 |
\6或\6{interface} | 与\ 4相同,但对于IPv6。 |
\b | 插入当前行的波特率。 |
\d | 插入当前日期。 |
\s | 插入系统名称,操作系统的名称。与’uname -s’相同。 |
\S或\S {VARIABLE} | 从/etc/ os-release插入VARIABLE数据,如果文件不存在,回退到/usr/lib/ os-release。如果未指定VARIABLE参数,则使用文件中的PRETTY_NAME或系统名称 |
\l | 插入当前tty的名称。 |
\m | 插入机器的架构标识符。与`uname -m’相同。 |
\n | 插入机器的节点名称,也称为主机名。与`uname -n’相同。 |
\o | 插入机器的NIS域名。与`hostname -d’相同。 |
\O | 插入机器的DNS域名。 |
\r | 插入操作系统的版本号。与`uname -r’相同。 |
\t | 插入当前时间。 |
\u | 插入当前登录用户的数量。 |
\U | 插入字符串“ users”,其中是当前登录用户的数量。 |
\v | 插入操作系统的版本,例如。建造日期等 |
2.2 配置文件载入过程
login shell——取得bash时需要完整的登入流程。login shell 只读取两个配置文件:
/etc/profile
——系统整体设定,每个使用者登入取得bash 时一定会读取该文件!
- 设置一些环境变量
- PATH:会依据 UID 决定 PATH 变量要不要含有 sbin 的系统指令目录;
- MAIL:依据账号设定好使用者的 mailbox 到
/var/spool/mail/
账号名; - USER:根据用户的账号设定此一变量内容;
- HOSTNAME:依据主机的 hostname 指令决定此一变量内容;
- HISTSIZE:历史命令记录笔数。CentOS 7.x 设定为 1000 ;
- umask:包括 root 默认为 022 而一般用户为 002 等!
- 读取设定文件
/etc/bash.bashrc
- 读取外部设定文件
/etc/profile.d/*.sh
——只要在/etc/profile.d/
这个目录内且扩展名为 .sh ,使用者能够具有 r 的权限, 那么该文件就会被/etc/profile
调用进来。在 CentOS 7.x 中,这个目录底下的文件规范了 bash 操作接口的颜色、 语系、ll 与 ls 指令的命令别名、vi的命令别名、which的命令别名等。如果你需要帮所有使用者设定一些共享的命令别名时, 可以在这个目录底下自行建立扩展名为 .sh 的文件,并将所需要的数据写入即可!
/etc/locale.conf
——这个文件是由/etc/profile.d/lang.sh
调用进来的!决定bash预设使用何种语系的配置文件!文件里最重要的就是LANG/LC_ALL 这变量的设定。/usr/share/bash-completion/completions/*
—— [tab]进行指令的选项/参数补齐功能,就是从这个目录里面找到相对应的指令来处理!其实这个目录底下的内容是由/etc/profile.d/bash_completion.sh
这个文件载入!
- 设置一些环境变量
~/.bash_profile
或~/.bash_login
或~/.profile
——属于使用者个人设定。