| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> profile 和 bashrc 的区别 -> 正文阅读 |
|
[系统运维]profile 和 bashrc 的区别 |
什么是 shellshell 简介shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。 shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,shell 有自己的编程语言用于对命令的编辑,它允许用户编写由 shell 命令组成的程序。shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的 shell 程序与其他应用程序具有同样的效果。 每个 Linux 系统的用户可以拥有他自己的用户界面或 shell,用以满足他们自己专门的 shell 需要。 不同版本同 Linux 本身一样,Shell 也有多种不同的版本。主要有下列版本的 Shell:
不同的 Shell 语言的语法有所不同,所以不能交换使用。每种 Shell 都有其特色之处,基本上,掌握其中任何一种就足够了。 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数 Linux 系统默认的 Shell。 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,在下面的文字中,我们可以看到 由于这层原因在 Debian 中使用 .profile 文件代替 .bash_profile 文件以兼容不同的 Shell。 .profile(由 Bourne Shell 和 Korn Shell 使用)和 .login(由 C Shell 使用)两个文件是 .bash_profile 的同义词,目的是为了兼容其它 Shell。 相关概念交互式 shell 和非交互式 shell交互式模式就是 shell 等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为 shell 与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell 也终止了。 shell 也可以运行在另外一种模式:非交互式模式。在这种模式下,shell 不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell 也就终止了。 login shell 和 non-login shelllogin shell:进入 bash 时需要完整的登陆流程的,就称为 login shell。 non-login shell:取得 bash 接口的方法不需要重复登陆的举动。比如我们登陆一个有可视化界面的 Linux 服务器后,右键启动终端 Terminal,此时这个终端接口是不需要输入账号与密码,那么这个启动的 shell 输入窗口就是 non-login shell。 查看和修改系统默认 shell查看系统所有的 shell
查看当前窗口使用的shell版本
查看系统用户默认shell可以看出 root 用户用的是 sh,其他用户用的是 bash
修改系统默认 shell为 bash
系统环境变量设定文件分类按照是否作用于 login shell 分类我们可以将系统的环境变量设定文件分为 profile 和 *rc 两大类:
按照作用范围优先级分类一般在 /etc 目录下会有下面几个文件,作用范围是全局。 /etc/profile
/etc/bashrc
~/.profile
~/.bash_profile
~/.bash_login
~/.bash_logout
~/.bashrc
~/.zprofile
~/.zlogin
~/.zlogout
~/.zshrc
按照是否依赖于具体的 shell 分类另外,我们可以认为 /etc/profile 和 .profile 是系统特定的环境变量设定文件,不依赖于具体的 shell,而其他的配置文件则要依据具体的 shell,这取决于你使用哪个作为系统默认的 shell。
不同 shell 的执行优先级bash 的配置文件执行优先级一般情况下,Linux 的默认 shell 是 bash,这也是 Linux 上最广泛使用的 shell。其执行优先级如下: 当系统的默认 shell 是 bash 的时候,对于 non-login shell,bash 会默认执行 .bashrc 文件。 对于 login shell,bash 会默认执行 .profile 文件,但是当系统有 .bash_profile 或 .bash_login 存在的时候则不会执行 .profile。 在刚登录 Linux 时: 首先启动 /etc/profile 文件; 然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login 或 ~/.profile 文件中的其中一个,执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。 开始执行用户的 bash 设置: 如果 ~/.bash_profile 文件存在的话,一般会以下面的方式执行用户的 ~/.bashrc 文件。 在 ~/.bash_profile 文件中一般会有下面的代码:
同样 ~/.bashrc 中,一般还会在文件的前面有以下代码,来执行 /etc/bashrc
~/.bash_profile 是交互式、login 方式进入 bash 运行的。~/.bashrc 是交互式 non-login 方式进入 bash 运行的。通常二者设置大致相同,所以通常前者会调用后者。 上面这三个文件是 bash shell 的用户环境配置文件,位于用户的主目录下。其中 .bash_profile 是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有命令都会被 bash 执行。 .bashrc 文件会在 bash shell 调用另一个 bash shell 时读取,也就是在 shell 中再键入 bash 命令启动一个新 shell 时就会去读该文件。这样可有效分离登录和子 shell 所需的环境。但一般来说都会在 .bash_profile 里调用 .bashrc 脚本以便统一配置用户环境。 zsh 的配置文件查找优先级mac 系统下,我们会安装 zsh 来代替系统默认的 bash,zsh 在用户体验方面有着更优秀的特性,比如色彩高亮,命令提示,智能补全,快速跳转等。 当系统的默认 shell 是 zsh 的时候:
当我们安装了 zsh 之后,一般会安装 Oh my zsh 这个扩展工具集,来丰富我们的日常操作。另外,可以参考下面的文章配置比较流行的 agnoster 主题。
执行优先级场景
参考资料[1] profile和bashrc的区别 https://www.cnblogs.com/Zzbj/p/15419982.html |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 12:23:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |