本文介绍: 以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除

一、Shell的启动方式

我们可以直接使用 Shell,也可以输入用户名密码后再使用 Shell;第一种叫做非登录式,第二种叫做登录式。

我们可以在 Shell 中一个个地输入命令并及时查看它们的输出结果,整个过程都在跟 Shell 不停地互动,这叫做交互式。我们也可以运行一个 Shell 脚本文件,让所有命令量化一次性地执行,这叫做非交互式

因此Shell 一共有四种运行方式:

二、Shell配置脚本加载

无论是否是交互式,是否是登录式,Bash Shell 在启动时总要配置运行环境,例如初始化环境变量设置命令提示符、指定系统命令路径等。这个过程通过加载系列配置文件完成的,这些配置文件其实就是 Shell 脚本文件

与 Bash Shell 有关的配置文件主要有 /etc/profile、~/.bash_profile、~/.bash_login、~/.profile、~/.bashrc、/etc/bashrc、/etc/profile.d/*.sh不同的启动方式会加载不同的配置文件

1、登录式的shell

Bash 官方文档说:

(1)如果是登录式的 Shell,首先会读取和执行 /etc/profiles,这是所有用户全局配置文件。注意,/etc/profiles 文件还会嵌套加载 /etc/profile.d/*.sh,请看下面的代码

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

(2)接着会到用户目录中寻找 ~/.bash_profile、~/.bash_login 或者 ~/.profile,它们都是用户个人的配置文件

不同的 Linux 发行版附带的个人配置文件也不同,有的可能只有其中一个,有的可能三者都有。如果三个文件同时存在的话,它们的优先级顺序是 ~/.bash_profile > ~/.bash_login > ~/.profile

即如果 ~/.bash_profile 存在,那么一切以该文件为准,并且到此结束,不再加载其它的配置文件。如果 ~/.bash_profile 不存在,那么尝试加载 ~/.bash_login。~/.bash_login 存在的话就到此结束,不存在的话就加载 ~/.profile。

另外,~/.bash_profile 也会加载 ~/.bashrc

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

2、非登录的 Shell

如果以非登录的方式启动 Shell,那么就不会读取以上所说的配置文件,而是直接读取 ~/.bashrc

~/.bashrc 文件还会嵌套加载 /etc/bashrc,请看下面的代码

if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

三、Shell配置脚本编写

从上面的分析可知,Shell 在登录和非登录时会加载哪些配置文件。对于普通用户来说,~/.bashrc文件也许是最重要的文件,因为不管是否登录都会加载该文件。

我们可以将自己的一些代码添加到 ~/.bashrc,这样每次启动 Shell 都可以个性化地配置。你也可以将自己编写代码放到一个新文件中(假设myconf.sh),只要在 ~/.bashrc 中使用类似“. ./myconf.sh”的形式将新文件引入进来即可

接下来我们介绍几个编写或者修改Shell配置脚本实例

案例1、给 PATH 变量增加新的路径

曾经是否感到迷惑,Shell 是怎样知道去哪里找到我们输入命令的?例如,当我们输入 ls 后,Shell 不会查找整个计算机系统,而是在指定的几个目录检索(最终在 /bin/ 目录中找到了 ls 程序),这些目录包含在 PATH 变量中。

用户登录 Shell 时,PATH 变量会在 /etc/profile 文件中设置然后在 ~/.bash_profile 也会增加几个目录。如果没有登录 Shell,PATH 变量会在 /etc/bashrc 文件中设置

如果我们想增加自己路径,可以将该路径放在 ~/.bashrc 文件中,例如:

PATH=$PATH:$HOME/addon

将主目录下的 addon 目录也设置系统路径。假如此时在 addon 目录下有一个 getsum 程序,它的作用是计算m 累加到 n 的和,那么我们不用 cdaddon 目录,直接输入 getsum 命令就能得到结果

案例2:修改命令提示符的格式

见博文修改shell的命令提示符最后部分的内容

原文地址:https://blog.csdn.net/oqqHuTu12345678/article/details/129200347

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_13771.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注