鸟哥的私房菜学习笔记 重要的Bash Shell的操作环境
来源:互联网 发布:学钢琴 软件 编辑:程序博客网 时间:2024/05/17 22:15
一、命令执行的顺序
1、相对/绝对路径运行命令
2、由alias找到命令来运行,命令别名
3、由bash内建的buildin命令来运行,只适用于内建命令
4、透过PATH这个环境变量的顺序搜寻到的第一个命令来运行
二、bash的环境配置文件
为了让bash更好的运行,在启动时bash会直接读取环境配置文件,这些配置文件包括:
1、全体系统的配置文件
2、用户个人偏好配置文件
前面讲到的命令别名在bash注销后也睡着注销,如果想要保留这个配置,那么必须要写入配置文件
两个概念:login 和 non-login shell
- login shell:取得 bash 时需要完整的登陆流程的,就称为 login shell。举例来说,你要由 tty1 ~ tty6 登陆,需要输入用户的账号与密码,此时取得的 bash 就称为『 login shell 』啰;
- non-login shell:取得 bash 接口的方法不需要重复登陆的举动,举例来说,(1)你以 X window 登陆 Linux 后, 再以 X 的图形化接口启动终端机,此时那个终端接口并没有需要再次的输入账号与密码,那个 bash 的环境就称为 non-login shell了。(2)你在原本的 bash 环境下再次下达 bash 这个命令,同样的也没有输入账号密码, 那第二个 bash (子程序) 也是 non-login shell 。
1、/etc/profile:这个是系统整体的配置,鸟哥警告说最好不要修改这个文件
此外他还会呼叫一下文件
/etc/inputrc 决定配置INPUTRC这个变量,就是看用户有没有自定义输入的按键功能
/etc/profile.d/*.sh 其实这个目录里面有很多文件,里面的文件包括规范操作接口的颜色,语系,ll和ls命令,命令别名等等
/etc/sysconfig/i18n 这个文件是由/etc/profile.d/lang.sh呼叫进来的!这也是我们决定bash默认使用何种语系的重要配置文件!文件里最重要的就是LANG这个变量的配置了
2、~/.bash_profile或者~/.bash_login或者~/.profile:这里属于个人配置,你要改自己的数据也写在这里。其实很多情况下我们得到的知识系统用户中的一个,并没有系统的root权限,在安装软件的时候配置环境变量也就在这里个人配置里面设置
个人配置文件其实主要有三个:
~/.bash_profile
~/.bash_login
~/.profile
其实bash的login shell配置只会读取上面三个文件中的一个,而读取的顺序则是依照上面的顺序。
在~/.bash_profile里面有句话很重要
PATH=$PATH:$HOME/bin
export PATH
这句话通过累加的方式把用户目录下的~/bin/目录,有点,可以直接运行改运行档而不需要使用绝对/相对路径了
整个login shell的读取流程为:
实线的方向是主线程,虚线的方向则是被呼叫的配置文件。
个人偏好配置是记录在~/.bashrc文件的
二、source命令
通常在修改完/etc/profile或者~/.bash_profile都得注销后再登录配置文件才会生效,直接读取配置文件而不用注销登陆的方法及时使用source
[root@www ~]# source 配置文件档名范例:将家目录的 ~/.bashrc 的配置读入目前的 bash 环境中[root@www ~]# source ~/.bashrc <==底下这两个命令是一样的![root@www ~]# . ~/.bashrc
三、~/.bashrc文件
如果是non-login shell 这种非登陆情况,读取的配置文件只有~/.bashrc
[root@www ~]# cat ~/.bashrc# .bashrc# User specific aliases and functionsalias rm='rm -i' <==使用者的个人配置alias cp='cp -i'alias mv='mv -i'# Source global definitionsif [ -f /etc/bashrc ]; then <==整体的环境配置 . /etc/bashrcfi
1、依据不同的UID规范出umask的值
2、依据不同的UID规范出提示字符,也就是PS1变量
3、呼叫/etc/profile.d/*.sh的配置
你要注意的是,这个 /etc/bashrc 是 CentOS 特有的 (其实是 Red Hat 系统特有的),其他不同的 distributions 可能会放置在不同的档名就是了。由于这个 ~/.bashrc 会呼叫 /etc/bashrc 及 /etc/profile.d/*.sh , 所以,万一你没有 ~/.bashrc (可能自己不小心将他删除了),那么你会发现你的 bash 提示字符可能会变成这个样子:
-bash-3.2$
不要太担心啦!这是正常的,因为你并没有呼叫 /etc/bashrc 来规范 PS1 变量啦!而且这样的情况也不会影响你的 bash 使用。 如果你想要将命令提示字符捉回来,那么可以复制 /etc/skel/.bashrc 到你的家目录,再修订一下你所想要的内容, 并使用 source 去呼叫 ~/.bashrc ,那你的命令提示字符就会回来啦!
四、其他相关的配置文件
这个还是看鸟哥自己写的,感觉比较受用
- 其他相关配置文件
事实上还有一些配置文件可能会影响到你的 bash 操作的,底下就来谈一谈:
- /etc/man.config
这个文件乍看之下好像跟 bash 没相关性,但是对于系统管理员来说, 却也是很重要的一个文件!这的文件的内容『规范了使用 man 的时候, man page 的路径到哪里去寻找!』所以说的简单一点,这个文件规定了下达 man 的时候,该去哪里查看数据的路径配置!
那么什么时候要来修改这个文件呢?如果你是以 tarball 的方式来安装你的数据,那么你的 man page 可能会放置在 /usr/local/softpackage/man 里头,那个 softpackage 是你的套件名称, 这个时候你就得以手动的方式将该路径加到 /etc/man.config 里头,否则使用 man 的时候就会找不到相关的说明档啰。
事实上,这个文件内最重要的其实是 MANPATH 这个变量配置啦! 我们搜寻 man page 时,会依据 MANPATH 的路径去分别搜寻啊!另外,要注意的是, 这个文件在各大不同版本 Linux distributions 中,檔名都不太相同,例如 CentOS 用的是 /etc/man.config ,而 SuSE 用的则是 /etc/manpath.config , 可以利用 [tab] 按键来进行文件名的补齐啦! - ~/.bash_history
还记得我们在历史命令提到过这个文件吧?默认的情况下, 我们的历史命令就记录在这里啊!而这个文件能够记录几笔数据,则与 HISTFILESIZE 这个变量有关啊。每次登陆 bash 后,bash 会先读取这个文件,将所有的历史命令读入内存, 因此,当我们登陆 bash 后就可以查知上次使用过哪些命令啰。至于更多的历史命令, 请自行回去参考喔! - ~/.bash_logout
这个文件则记录了『当我注销 bash 后,系统再帮我做完什么动作后才离开』的意思。 你可以去读取一下这个文件的内容,默认的情况下,注销时, bash 只是帮我们清掉屏幕的信息而已。 不过,你也可以将一些备份或者是其他你认为重要的工作写在这个文件中 (例如清空缓存盘), 那么当你离开 Linux 的时候,就可以解决一些烦人的事情啰!
五、终端机的环境设置:stty,set
tty1~tty6是终端机环境的文字接口,不同的接口有不同的字符配置
stty的意思呢就是set tty 就是设置终端机的意思
stty -a可以列出目前环境中的所有按键列表
eof:end of file的意思,代表结束输入
erase:向后删除字符
intr:送出一个interrupt(中断)的讯号给目前正在run的程序
kill:删除在目前命令列上的所有文字
quit:送出一个quit的讯号给目前正在run的程序
start:在某个程序停止后,重新启动它的output
stop:停止目前屏幕的输出
susp:送出一个terminal stop的讯号给正在run的程序
其中^是CTRL的意思
通过如下命令可以修改linux的热键
stty command key
exp:
stty erase ^h
上面的命令将删除键修改为ctrl+h
stty erase ^? 修改回backspace
六、常用的快捷键
七、通配符,这个很重要
常见的用法:
[root@www ~]# LANG=C <==由于与编码有关,先配置语系一下范例一:找出 /etc/ 底下以 cron 为开头的档名[root@www ~]# ll -d /etc/cron* <==加上 -d 是为了仅显示目录而已范例二:找出 /etc/ 底下文件名『刚好是五个字母』的文件名[root@www ~]# ll -d /etc/????? <==由于 ? 一定有一个,所以五个 ? 就对了范例三:找出 /etc/ 底下文件名含有数字的文件名[root@www ~]# ll -d /etc/*[0-9]* <==记得中括号左右两边均需 *范例四:找出 /etc/ 底下,档名开头非为小写字母的文件名:[root@www ~]# ll -d /etc/[^a-z]* <==注意中括号左边没有 *范例五:将范例四找到的文件复制到 /tmp 中[root@www ~]# cp -a /etc/[^a-z]* /tmp
八、bash环境中比较特殊的符号
- 鸟哥的私房菜学习笔记 重要的Bash Shell的操作环境
- 【鸟哥的linux私房菜-学习笔记】Bash shell的变量功能及操作环境
- 鸟哥的linux私房菜学习笔记《二十二》bash shell的操作环境
- 对鸟哥私房菜的学习——基础篇 十一章,4 Bash Shell的操作环境
- 鸟哥的私房菜:Bash shell(四)-Bash shell的使用环境
- 鸟哥的 Linux 私房菜 -- 学习 bash shell
- 鸟哥的 Linux 私房菜 -- 学习 bash shell
- 鸟哥的 Linux 私房菜 -- 学习 bash shell
- 【鸟哥的linux私房菜-学习笔记】Bash shell之数据流重导向
- 【鸟哥的linux私房菜-学习笔记】Bash shell之管线命令
- 鸟哥的私房菜:Bash shell(六)-管道命令
- 《鸟哥的私房菜》(第二版)第十一章 Bash Shell 简要命令笔记
- 学习shell笔记------------鸟哥的私房菜
- 学习使用shell script 笔记--------鸟哥的私房菜
- 鸟哥的Linux私房菜学习笔记--shell入门
- 鸟哥的私房菜:Bash shell(一)-Bash shell功能简介
- 鸟哥的 Linux 私房菜第11章-认识与学习 BASH 学习笔记
- 鸟哥的Linux私房菜学习笔记--重要的几个热键
- UVA10025连续自然数添上正负号得到固定的数
- css页面布局基础
- HDU 3829 — Cat VS Dog 最大独立集
- Fraction类(分数)实现分数的加减乘除, ⽐比较⼤大⼩小、约分等⽅方法
- hdu5336 多校联合第四场1010 模拟+bfs优先队列
- 鸟哥的私房菜学习笔记 重要的Bash Shell的操作环境
- Windows7解决VBoxDD.dll不能加载
- Integer super重写重载public4个关键字
- hdu 3790 最短路径问题 最短路Dijkstra
- 46 Useful Utility Functions For #Delphi XE8
- 使用libsvm实现文本分类
- 在网上找来的几个大牛,忽然觉得自己来参加ACM倒也不是一件错误的事情,梦想总是要有的,万一成了呢。
- Django Book CH3(视图和URL配置)
- hdoj Radar Installation