Bash Shell执行环境相关


指令运作的顺序:

1、以相对/绝对路径执行指令,例如『 /bin/ls 』或『 ./ls 』;

2、由 alias 找到该指令来执行;

3、由 bash 内建的 (builtin) 指令来执行;

4、透过 $PATH 这个变量的顺序搜寻到的第一个指令来执行。

 

shell命令行的解释流程:

 

bash的进站与欢迎信息: /etc/issue, /etc/motd

issue 内的各代码意义

\d 本地端时间的日期;
\l 显示第几个终端机接口;
\m 显示硬件的等级 (i386/i486/i586/i686...);
\n 显示主机的网络名称;
\o 显示 domain name;
\r 操作系统的版本 (相当于 uname -r)
\t 显示本地端时间的时间;
\s 操作系统的名称;
\v 操作系统的版本。


系统环境变量设置位置:/etc/profile      /etc/inputrc    /etc/profile.d/*.sh   /etc/sysconfig/i18n

用户环境变量设置位置:~/.bash_profile  ~/.bashrc   /etc/bashrc


取得BASH时的两个种接口:

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 。


login shell 的配置文件读取流程:( /etc/bashrc CentOS 特有的 (其实是Red Hat 系统特有的



 non-login shell 这种非登入情况取得 bash 操作接口的环境配置文件又是什么? 

当你取得 non-login shell 时,该bash 配置文件仅会读取 ~/.bashrc 而已


 

终端机的环境设定: stty, set

 

stty -a 来列出目前环境中所有的按键列表,在上头的列表当中,需要注意的是特殊字体那几个,此外,如果出现 ^ 表示[Ctrl] 那个按键的意思。举例来说, intr = ^C 表示利用 [ctrl] + c 来达成的。几个重要的代表意义是:

  • eof   : End of file 的意思,代表『结束输入』。
  • erase : 向后删除字符,
  • intr  : 送出一个 interrupt (中断) 的讯号给目前正在 run 的程序;
  • kill  : 删除在目前指令列上的所有文字;
  • quit  : 送出一个 quit 的讯号给目前正在 run 的程序;
  • start : 在某个程序停止后,重新启动他的 output
  • stop  : 停止目前屏幕的输出;
  • susp  : 送出一个 terminal stop 的讯号给正在 run 的程序。
bash默认的组合键

组合按键

执行结果

Ctrl + C

终止目前的命令

Ctrl + D

输入结束 (EOF),例如邮件结束的时候;

Ctrl + M

就是 Enter 啦!

Ctrl + S

暂停屏幕的输出

Ctrl + Q

恢复屏幕的输出

Ctrl + U

在提示字符下,将整列命令删除

Ctrl + Z

『暂停』目前的命令





配置文件:

/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 的时候,就可以解决一些烦人的事情啰!



环境变量

LS_COLORS 

设置ls命令输出信息的颜色 

推荐:LS_COLORS='di=38;5;39:fi=38;5;229:ln=38;5;215:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=38;5;40:*.py=38;5;166'


Add the following lines to the bottom of your ~/.bashrc
alias ls='ls --color'
LS_COLORS='di=1:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=35:*.rpm=90'
export LS_COLORS


The first line makes ls use the --color parameter by default, which tells ls to display files in different colours based on the setting of the LS_COLORS variable.

The second line is the tricky one, and what I have worked out so far has been by trial and error. The parameters (di, fi, etc.) refer to different Linux file types. I have worked them out as shown


di = directory
fi = file
ln = symbolic link
pi = fifo file
so = socket file
bd = block (buffered) special file
cd = character (unbuffered) special file
or = symbolic link pointing to a non-existent file (orphan)
mi = non-existent file pointed to by a symbolic link (visible when you type ls -l)
ex = file which is executable (ie. has 'x' set in permissions).


The *.rpm=90 parameter at the end tells ls to display any files ending in .rpm in the specified colour, in this case colour 90 (dark grey). This can be applied to any types of files (eg. you could use '*.png=35' to make jpeg files appear purple.) As many or as few parameters as you like can go into the LS_COLORS variable, as long as the parameters are separated by colons.


Using trial and error (and a little bash script I wrote... my first one ever! :) I worked out all the colour codes, at least my interpretation of them -


0   = default colour
1   = bold
4   = underlined
5   = flashing text
7   = reverse field
31 = red
32 = green
33 = orange
34 = blue
35 = purple
36 = cyan
37 = grey
40 = black background
41 = red background
42 = green background
43 = orange background
44 = blue background
45 = purple background
46 = cyan background
47 = grey background
90 = dark grey
91 = light red
92 = light green
93 = yellow
94 = light blue
95 = light purple
96 = turquoise
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background

These can even be combined, so that a parameter like:
di=5;31;42
in your LS_COLORS variable would make directories appear in flashing red text with a green background!

Setting LS_COLORS does more than just make your ls listings look pretty (although it certainly does do that), it is also very helpful in identifying files while wading through a file system.

LS_COLORS='no=00:fi=00:di=01;33:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=0
1;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32
:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;3
1:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm
=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:'

这个是我的系统里经常用的颜色配置,还不错。

你可能感兴趣的:(Linux)