蜗牛梦科技
    • 网站首页
    • 公司简介
      公司简介
      企业文化
    • 产品展示
    • 新闻动态
      公司新闻
      行业新闻
    • 成功案例
      成功案例
    • 客户服务
      售后服务
      技术支持
    • 人才招聘
    • 联系我们
      联系我们
      在线留言

    新闻动态Site navigation

    公司新闻
    行业新闻

    联系方式Contact


    地 址:北京市房山区66号

    电 话:18120438885
    网址:www.lbwcode.com
    邮 箱:61208018@qq.com

    网站首页 > 新闻动态
    新闻动态Welcome to visit our

    深入了解定制Bash

    分享到:
      来源:蜗牛梦科技  更新时间:2026-10-01 01:24:19  【打印此页】  【
    关闭
    】

    操作系统的(de)深入最外层 —— 也就是跟你直接打交道(dao)的 —— 叫做(zuo) shell(“外(wai)壳”)。Fedora 预装了好几种不同的解定 shell。shell 可(ke)以是深入图(tu)形界面,或者字符界面(mian)。解定在(zai)文档中,深入(ru)你(ni)常(chang)常能见到两个母缩写词 GUI (图(tu)形用户界面Graphical User Interface)跟 CLI(命令行界面Command-Line Interface),解定它们用来区分图形和(he)基于字符的深入 shell/界面。GNOME 和 Bash 分别是解定 Fedora 默认的(de)图形和命令行界面,不过你也可以使用其它 GUI 或者 CLI shell。深入

    接下来在这篇文章中,解定我(wo)们会(hui)讨论一些比较推荐的深(shen)入 Bash 字符界面的(de)点(dian)文件配置。

    深入了解定制Bash

    Bash 参(can)考手册中(zhong)写道:

    深入了解定制Bash

    除了能使用其它程序之外,解定Bash shell 还(hai)含有一些内置命令和关键(jian)字。深入Bash 内置功能很强大,解定甚至能够作为一门 高级语言 独当一面。深入Bash 的几个关键字和操作符类似于 C 语言。

    深入了解定制Bash

    Bash 能够以交互式或非交互式(shi)模式启动(dong)。Bash 的交(jiao)互模式是一个很多人都熟悉的典型的终端/命令行界面。GNOME 终端 默认以交互模式打开 Bash。Bash 在非交互模式下运行的例子是,当命令和数据从(cong)文件或 shell 脚本通过 管道 传送到 Bash 时。其(qi)它 Bash 可以(yi)运行的模式包括:登录login、非登录non-login、远程remote、POSIX、Unix sh、受限restricted,以及使用与用户不同的 UID/GID 模式。各种模式是可以相互组合的。比如,交互式 + 受限(xian) + POSIX 或者非交互式 + 非登录 + 远程(cheng)。不同的启动模式,决(jue)定着 Bash 所读取的启动文件。理解这些操作模式,有助于帮助我们修改启动文件。

    根据 Bash 参考手册,它会:

    当(dang)用(yong)户开启终端模拟器进入命令行环境时,便启动了一次交互式 shell 会话。GNOME 终端默认以非登录模式为用(yong)户打开 Shell。你可以在 “编辑 → 首选项 → 配置文件 → 命令Edit → Preferences → Profilles → Command” 中配置 GNOME 终端以何种模式(登录与非登录式)启动(dong)。也可以在 Bash 启动时(shi)通过向其传递 -login 标志来要求进入登录模式。要注意一点(dian),Bash 的登录模式与非交互模式并(bing)不互斥。可以让 Bash 同时以登录模式和非交互模式运行。

    除非传(chuan)入 -noprofile 选项,否则登录模式的 Bash shell 会默认读取并执行某些初始化文件中命令。如果 /etc/profile 存(cun)在,它会是第一个被执行的(de)文件,紧接着(zhe)是按 ~/.bash_profile、~/.bash_login 或 ~/.profile顺序找到的第一个文件。当用户退出登录模式的 shell 时,或者有脚本在非交互式登录模式的 shell 中调用了内(nei)置 exit命令,Bash 会读取并执行 ~/.bash_logout 中的命令,如果 /etc/bash_logout 存在的话,会紧接着执行(xing)它。通常来说,/etc/profile 会援引source /etc/bashrc 文件,读取并执行其中的命令,然后查找并读取执行(xing) /etc/profile.d 目录中以 .sh 结尾的文件。同样的,~/.bash_profile 通(tong)常也会援引source ~/.bashrc 文件。/etc/bashrc 和 ~/.bashrc 都会进行检查,避免重复援引source。

    一个交互式的 shell,如果不是登录 shell,那么(me)当它第一次被(bei)调(diao)用的时候,会执行 ~/.bashrc 文件(jian)。这是用户在 Fedora 上打开(kai)终端时通常会(hui)进入的 shell 类型。当 Bash 以非交互模式启动 —— 就像运行脚本时那样 —— 它会寻找 BASH_ENV环境变量。如(ru)果找到了,就会(hui)展开它的值作为文件名,接着读取并执行该文件(jian)。效果跟执行以下命令相同:

    值得注意的是,不(bu)会使用 PATH 环境变量的值来搜索该文件名(LCTT 译注:意即不(bu)会(hui)检索搜索路径)。

    Bash 最广为(wei)人(ren)知的用户点文件(jian)是(shi) ~/.bashrc。通过(guo)编辑该文件,可以设置大多数(shu)个(ge)性化选项。由于我们常常需要设置一些选项,会改动上面提及甚至没有提及的文件,所以大部分(fen)自定义选项会成为(wei)一个麻烦事。Bash 环境具有很高的可定(ding)制性,正是(shi)为了适应不同用户的不同需求。

    当登录 shell 正常退出时,如果 ~/.bash_logout 和 /etc/bash_logout 存在,它们会被调用。下(xia)一幅图(tu)展示了 Bash 作为交互式(shi) shell 启动时的过程。例如,当用户从(cong)桌面环境打开终端模拟器时(shi),会按照以下顺序进行(xing)。

    我们已经知道(dao),在(zai)不同的启动(dong)模式下,Bash 会执行不同的命令,所以很明显,只有几种(zhong)最需要关注的典型启动模式。分别是非交互、交互式登录 shell,和非交互式、交互式非登录 shell。如果想定义某些全局环境,那么(me)需要将一个具有唯一名称、以 .sh 为后缀的文件(例如 custom.sh)放置在 /etc/profile.d 目录。

    对于非交互式非登录启动方(fang)式,需要特别注意。在(zai)这种(zhong)模式下,Bash 会(hui)检查 BASH_ENV 变量。如果定义了该变量,Bash 会援引它所指向(xiang)的文件。另外,处理(li) BASH_ENV 时并不会使用 PATH 变量所存储的值(LCTT 译注:意即不会检索搜索路径),所以它必(bi)须包含执行文件的绝对路径。比如说(shuo),如果有人希望非交互式执行脚本时,shell 能读取 ~/.bashrc 文件中的设置,那么他可以把类似下(xia)面这样的内(nei)容放在一个名为 /etc/profile.d/custom.sh 的文件中...

    上面这份脚本会让每个 shell 脚本在运行之前(qian)先执行该用户的 ~/.bashrc。

    用户一般都(dou)会自定义他(ta)们的系统(tong)环境,以便契合他们自己的工作习惯与偏好。举例来说,用户可以通过别名来实现(xian)这种程度的自定义。拥有相同起始参数、需要频繁使用的(de)命令是制作别名的最佳选择。以下展示了(le)一些来自 ~/.bashrc 文件中定义的别名。

    在系统中,别名是一种自定义各种(zhong)命令的方法。它能减少击键次数,而且让命令用起来更(geng)方便。针对用户级别的别名通常存放在该用户的 ~/.bashrc 文件(jian)中。

    如果你发现自己经常要去历史中(zhong)查找曾经执行过的(de)某条命令,那可能需(xu)要改改历史设置了(le)。你依然可以在 ~/.bashrc 文件中设置针对用户级别的历史选项。比如说,如习惯同时使用多个(ge)终端,那你可能要启用 histappend 选项。某些 Bash 相关的 shell 选项本质上是布尔值(接收 on 或 off),通常可以用内(nei)置命令 shopt 启用或禁用。接收更复(fu)杂的值的 Bash 选项(如 HISTTIMEFORMAT),常常通过赋值给(gei)环境变量来达到配置目的。以(yi)下演示如何以 shell 选项和(he)环境变量(liang)定制 Bash。

    上面例子中的 direxpand 选项,可以让 Bash 在文件名补全时,用单词展(zhan)开(kai)结果替换目录名。它会改变 readline 编辑缓冲区的内容,所以你所输入的东西(xi)已经被补全得到的(de)结(jie)果替换了。

    HISTCON TROL 变量用于启用或禁用命令历史的某些过滤选项。重复行、以空白打头(tou)的行(xing),都能通过该选项将它们从命令历史中过滤掉。引用自 Dusty Mabe,这是我(wo)从他那儿得(de)到的技巧:

    对于命令行重(zhong)度用(yong)户,Bash 有一个 CDPATH 环境变量(liang)。如果 CDPATH 包含一系列供 cd 命令搜索的(de)目录,且提供一个相对(dui)路径作为(wei)第一个参数(shu),那么(me)它会按顺序检查所有列出的目录,寻找匹配的子目录并切换到第一个匹配结果目录。

    CDPATH 通常像 PATH 一样的方(fang)式进(jin)行更新 —— 通过在赋值右侧引用自身来保留原来的值。

    PATH 是(shi)另一个极其重要(yao)的变量。它是系统(tong)上的命令的(de)搜索路径。注意,有些应用要求将它们自己的目录加入 PATH 变(bian)量,这样才能(neng)正常使用。跟 CDPATH 一样,通过在赋值右侧引用原值来追加(jia)新(xin)值到 PATH 变量。如果你希望将新值前置,只需要把原来的值($PATH)放到列表末尾即可。还有注意的是(shi)在 Fedora,这一列值通过冒号分隔(:)。

    命令提示符是另一个流行的自定义选项。它有七个可定制的(de)参数:

    Bash 的这一个方面就可(ke)以(yi)用整篇文章来讨论(lun)。你可以(yi)找到许许多多信息和例子。在(zai)本文末尾链接的(de)存储库中(zhong)提供了一些点文件范例,包括提示符重新配置。你可以随意使用该存储库中(zhong)的例子进行学习和体验。

    既然你已经掌握了一些 Bash 的工作原理,那就可以轻松修改你的 Bash 点(dian)文件,满足你自己的需求和习惯。美化(hua)你的提示符,制作一些别名,这样你的电脑才真的属于你。查看 /etc/profile、/etc/bashrc 和 /etc/profile.d/ 这些文件的内容,获得一些启发。

    你也可以在这里写一些关于终端模拟器的评论。有很多办法可以将你最(zui)喜欢的终端,完全配置成你想要的样子。你或许早就想到了,但是通常可以通过……嗯……用户家目录的点文件实(shi)现这个目的。终端模拟器也可以作(zuo)为登录会话启动,有些人总喜欢用登录环境。你使用终端和电脑的姿势,取决(jue)于你(ni)如何修改(或不修改)你的点文件。

    如果你很好奇自己的命令行处于什么会话状态,使用下(xia)面这个脚本来判断一下(xia)。

    把(ba)这(zhe)几行放到一个文件里,加上(shang)可执行权限(xian),然后运行,就能看(kan)到你当前处(chu)于何种类型的 shell。$- 在 Bash 中是一个变量,如果是(shi)交互式(shi) shell,它会(hui)包含字母 i。此外,你可以直接输出 $- 变量然后检查它的输出中是(shi)否含有 i 标记。

    可以参(can)考以下资料以获取更多信息和示例。Bash 手(shou)册也是(shi)一个很好的信息来源。请注意(yi),确保你的本地手册页记录了你当前运行的 Bash 版本的特性,因为(wei)在网上找到的信息有时可能太老(过时了)或太新(你的系统还没有安装)。

      https://open='open'source.com/tags/command-line https://opensource.com/downloads/bash-cheat-sheet(在该网站中,你必须要输入一个(ge)有效的电子邮箱地址,或者注册,才能下载。) https://open="open"source.com/article/19/12/bash-script-template

    对本文有各种形式(点文件示例、提示,以及脚本文件)贡献的社区成(cheng)员:

      Micah Abbott – 首席质量工程师 John Lebon – 首席软件工程师 Dusty Mabe – 首席软件(jian)工程师 Colin Walters – 高级首席软件工程师

    示例点文件和脚本可以在这个存储库中找到:

      https://github.com/TheOneandOnlyJakfrost/bash-article-repo

    请仔细检查上面所提供的存储库中的信息。有些(xie)可能已(yi)经过时了。里面还包含很多开(kai)发(fa)中的自定义脚本和宠物容器pet container配置例子,那些不是点文(wen)件。我推荐从 John Lebon 的点文件开始学(xue)习,从头到尾都含有完善的解说,它们是我见过的最详细的,并且包含了非常好的(de)描述。祝你学得开心!

    【责任编辑:庞桂玉 】

    上一篇:黄冈市招投标中心网_黄冈网站建设找谁_2
    下一篇:默认搜索引擎_百度默认搜索引擎网址

    相关文章

    • 高端定制网站设计_遂宁网站定制哪家好点呢
    • 模特招聘网站_模特网站制作软件推荐
    • 模板一张多少钱_网站模板价位
    • 模板建站哪个平台好_模板网站系统哪个好
    • 高端网站建设的公司_高端网站建设的基本步骤
    • 模板网站和定制网站的区别_模板建网站有什么优劣_3
    • 模板建站_邢台模板网站制作哪家好
    • 模板建站_邯郸网站建设方案模板_1
    • 高端网站建设公司排名_青海高效网站建设哪家好_1
    • 模板建站_模板网站建设报价_1

    友情链接:

    • 许昌运诗网络科技有限公司
    • 怀化驰艾网络科技有限公司
    • 玉门春立网络科技有限公司
    • 漯河相源网络科技有限公司
    • 宁德新洁网络科技有限公司
    • 枣庄源欣网络科技有限公司
    • 从化圆万网络科技有限公司
    公司简介|产品展示|
    新闻动态
    |成功案例|客户服务|人才招聘|联系我们

    Copyright © 2026 Powered by 蜗牛梦科技   sitemap

    0.349s , 49775.203125 kb