这篇笔记可能稍微琐碎一些,都是一些小的知识点。
狭义的shell是命令行方面的软件,包括这里要介绍的bash。广义的shell指能够操作应用程序的接口包括图形界面的软件。bin/bash
是Linux默认的shell。
命令行模式
通常我们称命令行模式为终端界面,linux默认情况下提供六个终端界面(tty1~tty6)来让用户登录,切换方式为:
- Ctrl+Alt+[F1]~[F6]的组合按钮切换至tty1~tty6终端
- Ctrl+Alt+[F7]:切换至图形界面桌面
在终端我们就可以输入bash执行命令了,命令运行的顺序基本是这样:
- 以相对或绝对路径执行命令,例如“/bin/ls”或“./ls”
- 由alias找到该命令来执行
- 由bash内置的命令来执行
- 通过$PATH变量的顺序找到第一个命令来执行
bash的变量
- echo可以显示变量,但是要在前面加上字符”$“,设置或修改变量内容则可以用等于符号“=”。但是当shell终端关闭后自定义变量就销毁了。
- 在一串命令中,还需要通过其他命令提供的信息,可以通过
$(命令)
实现。例如echo $(ls)
输出命令ls输出的内容。变量也适用,例如执行PATH=$PATH:/home/bin
会把:/home/bin
追加到PATH变量中。 - 当登录Linux并取得一个bash后,我们的bash就是一个独立的进程,接下来这个bash下面执行的任何命令都是由这个bash所衍生出来的,那些被执行的命令就被称为子进程。子进程可以继承父进程的环境变量,但没办法继承自定义变量。但是用export命令可以把变量设置成环境变量,给子进程执行。
- 当前执行的shell中,
$
变量是当前shell的PID号,用echo $$
查看。 ?
变量(就是一个问号)是上一次命令的执行回传值,如果成功执行这个值是0。你可以用echo $?
查看。$1
到$n
代表命令的n个参数输入值。
bash的环境配置文件
bash启动时会读取配置文件,以规划好bash的操作环境,包括一些环境变量等。
login shell
取得bash时需要完整的登录流程的就称为login shell,login shell一般会读取两个配置文件:
/etc/profile
,这是系统整体的设置,最好不要修改,每个用户登录都会读取这个文件~/.bash_profile
或~/.bash_login
或~/.profile
,属于用户个人设置
non-login shell
取得bash接口不需要重复登录的举动,例如用图形界面登录Linux后,再以图形界面启动终端机,此时那个终端接口没有需要再次输入账号与密码。non-login shell只会读取~/.bashrc
而已。
source命令或小数点(.)可以将配置文件的内容读进目前的shell环境中。例如我们修改了~/.bashrc
,那么不需要注销,用source ~/.bashrc
就可以将刚才最新设置的内容读进目前的环境中。这个操作其实就是在当前bash进程执行了配置文件(配置文件相当一个shell脚本)。