Linux——bash shell的操作环境

本文深入解析Bash Shell的指令搜寻顺序、环境配置文件、终端机设定及通配符使用,涵盖路径搜索、bash配置文件读取规则、键盘设定与环境变量管理,适合进阶用户学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、路径与指令搜寻顺序

<1> 以相对/绝对路径执行指令,例如『 /bin/ls 』或『 ./ls 』;
<2> 由 alias 找到该指令来执行;
<3>由 bash 内建的 (builtin) 指令来执行;
<4>透过 $PATH 这个变量的顺序搜寻到的第一个指令来执行。
通过命令:$ type  -a  指令    可以查看指令的执行顺序

2、bash的进站与欢迎信息

[dmtsai@study ~]$ cat /etc/issue
                            \S
                            Kernel  \r  on  an  \m        ##欢迎信息

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

3、bash的环境配置文件

<1>login与non-login  shell  

        login shell:取得bash是需要完整的登入流程。

        non-login shell:取得bash接口的方法不需要重复登入。

        login shell 读取的配置文件:/etc/profile :系统整体设定的文件,建议不要去修改

                                             ~/.bash_profile或~/.bash_login或~/.profile属于个人设定,当需要修改自己的数据时就在此修改

<2>/etc/profile(login shell 才会读)

         该文件利用使用者的标识符来决定 很多重要的变量数据,每个使用者登入取得的bash时一定会读取的配置文件,如果需要使所有使用者设定整体的环境,可以通过更改这个文件来进行修改。

         该文件主要的变量有:

        · PATH:会依据 UID 决定 PATH 变量要不要含有 sbin 的系统指令目录;
        · MAIL:依据账号设定好使用者的 mailbox 到 /var/spool/mail/账号名;
        · USER:根据用户的账号设定此一变量内容;
        · HOSTNAME:依据主机的 hostname 指令决定此一变量内容;
        · HISTSIZE:历史命令记录笔数。CentOS 7.x 设定为 1000 ;
        · umask:包括 root 默认为 022 而一般用户为 002 等!

         该文件不仅可以进行如上的操作,其还可以呼叫一些外部设定数据,例如:

         /etc/locale.conf:决定bash预设使用何种语系

         /usr/share/bash-comppletion/completions/*  : 命令 、档名、选项、参数等补齐功能的配置文件,实质是                                                                                                            由/etc/profile.d/bash.completion.sh

<3>~/.bash_profile(login shell 才读)

       读取使用者的个人配置文件,读取的个人偏好配置文件主要有三个,依次分别是~/.bash_profile、~/.bash_login、~/.profile。bash的login shell只会读取其中之一,读取顺序按照以上顺序读取。

<4>source :读入环境配置文件的指令

          由于 /etc/profile 与 ~/.bash_profile 都是在取得 login shell 的时候才会读取的配置文件,所以, 如果你将自己的偏好设定写入上述的文件后,通常都是得注销再登入后,该设定才会生效。但是可以通过source命令使得在不重新注销登入的情况下直接读取配置文件:命令:$ source  配置文件档名

<5>~/.bashrc(non-login shell 会读)
当取得non-login  shell时,该bash配置文件仅会读取~/.bashrc。对于root和一般用户查看该配置文件时可能获取的内容不同。在root中已经规范了命令别名,但是centos依然会主动呼叫/etc/bashrc这个文件,该文件可以帮助bash定义出一下数据:

        · 依据不同的 UID 规范出 umask 的值;
        · 依据不同的 UID 规范出提示字符 (就是 PS1 变量);
        · 呼叫 /etc/profile.d/*.sh 的设定

<5>其他配置文件

    /etc/man_db.conf:规范使用man的时候,man page 的寻找路径

    ~/.bash_history:历史记录保存位置

    ~/.bash_logout:该文件记录在注销bash后,系统需要帮我做完什么动作后再离开。

4、终端机的环境设定

查看目前设定的按键内容:

命令:$  stty  -a           ##将目前所有的stty参数列出

    列出内容代表意义:

        · ^ 表示 [Ctrl] 
        · intr : 送出一个 interrupt (中断) 的讯号给目前正在 run 的程序 (就是终止啰!);
        · quit : 送出一个 quit 的讯号给目前正在 run 的程序;
        · erase : 向后删除字符,
        · kill : 删除在目前指令列上的所有文字;
        · eof : End of file 的意思,代表『结束输入』。
        · start : 在某个程序停止后,重新启动他的 output
        · stop : 停止目前屏幕的输出;
        · susp : 送出一个 terminal stop 的讯号给正在 run 的程序。

更改键盘设定:命令:$ stty   需要更改按键的内容    新设定的按键

例:在windows系统中,习惯按键ctrl+s来进行保存,但是在linux系统中按ctrl+s(stop)是锁死画面的意思(ctrl+q恢复start模式),所以我们可以通过更改按键来达到目的。$  stty  stop  ^r  即按下Ctrl+s时将 不会锁死画面(stop)

除stty之外,也可以通过bash来设定一些终端设定值。

 

    [dmtsai@study ~]$  set  [-uvCHhmBx]
        选项与参数:
              -u :预设不启用。若启用后,当使用未设定变量时,会显示错误讯息;
              -v :预设不启用。若启用后,在讯息被输出前,会先显示讯息的原始内容;
              -x :预设不启用。若启用后,在指令被执行前,会显示指令内容(前面有 ++ 符号)
              -h :预设启用。与历史命令有关;
              -H :预设启用。与历史命令有关;
              -m :预设启用。与工作管理有关;
              -B :预设启用。与刮号 [] 的作用有关;
              -C :预设不启用。若使用 > 等,则若文件存在时,该文件不会被覆盖。
    范例一:显示目前所有的 set 设定值
        [dmtsai@study ~]$ echo $-
              himBH
              # 那个 $- 变量内容就是 set 的所有设定啦! bash 预设是 himBH 喔!
    范例二:设定 "若使用未定义变量时,则显示错误讯息"
        [dmtsai@study ~]$ set -u
        [dmtsai@study ~]$ echo $vbirding
              -bash: vbirding: unbound variable
              # 预设情况下,未设定/未宣告 的变量都会是『空的』,不过,若设定 -u 参数,
              # 那么当使用未设定的变量时,就会有问题啦!很多的 shell 都预设启用 -u 参数。
              # 若要取消这个参数,输入 set +u 即可!
    范例三:执行前,显示该指令内容。
        [dmtsai@study ~]$ set -x
              ++ printf '\033]0;%s@%s:%s\007' dmtsai study '~' # 这个是在列出提示字符的句柄!
        [dmtsai@study ~]$ echo ${HOME}
              + echo /home/dmtsai
              /home/dmtsai
              ++ printf '\033]0;%s@%s:%s\007' dmtsai study '~'
# 看见否?要输出的指令都会先被打印到屏幕上喔!前面会多出 + 的符号!

     bash 默认的组合键:

  组合按键执行结果
Ctrl + C 终止目前的命令
Ctrl + D输入结束 (EOF),例如邮件结束的时候
Ctrl + M就是 Enter
Ctrl + S暂停屏幕的输出
Ctrl + Q恢复屏幕的输出
ctrl + U在提示字符下将整行命令删除
ctrl + Z

暂停目前的 命令

5、通配符与特殊符号

通配符:

符号 意义
* 代表『 0 个到无穷多个』任意字符
? 代表『一定有一个』任意字符
[ ]同样代表『一定有一个在括号内』的字符(非任意字符)。例如 [abcd] 代表『一定有一个字符, 可是 a, b, c, d 这四个任何一个』
[ - ]若有减号在中括号内时,代表『在编码顺序内的所有字符』。例如 [0-9] 代表 0 到 9 之间的所有数字,因为数字的语系编码是连续的!
[^ ]若中括号内的第一个字符为指数符号 (^) ,那表示『反向选择』,例如 [^abc] 代表 一定有一个字符,只要是非 a, b, c 的其他字符就接受的意思。

 

特殊符号: 

符号 内容
# 批注符号:这个最常被使用在 script 当中,视为说明!在后的数据均不执行
跳脱符号:将『特殊字符或通配符』还原成一般字符
管线 (pipe):分隔两个管线命令的界定;
连续指令下达分隔符:连续性命令的界定 (注意!与管线命令并不相同)
~ 用户的家目录
$取用变数前导符:亦即是变量之前需要加的变量取代值
&工作控制 (job control):将指令变成背景下工作
!逻辑运算意义上的『非』 not 的意思!
目录符号:路径分隔的符号
>, >> 数据流重导向:输出导向,分别是『取代』与『累加』
<, << 数据流重导向:输入导向 
' ' 单引号,不具有变量置换的功能 ($ 变为纯文本)
" " 具有变量置换的功能! ($ 可保留相关功能)
` ` 两个『 ` 』中间为可以先执行的指令,亦可使用 $( )
( ) 在中间为子 shell 的起始与结束
{ } 在中间为命令区块的组合!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值