bash和sh

本文遵循BY-SA版权协议,转载请附上原文出处链接。


本文作者: 黑伴白

本文链接: http://heibanbai.com.cn/posts/e9d31a13/

bash和sh

什么是Shell

shell 单词的本意是“壳子”,在计算机领域一样可以理解为机器外面的一层壳,目的是进行用于人机交互,本质上是命令解释器。之所以叫壳,是为了和计算机的“核”来区分,用它表示“为使用者提供的操作界面”。

只要是人与电脑之间交互的接口,就可以称为 shell。Shell也会泛指所有为用户提供操作界面的程序,分为两类:命令行(CLI)与图形界面(GUI)。通常情况下说的shell指Linux的命令行界面。

shell有哪些

bash shell 是 Linux 中的默认 shell,通常也是所有用户首先熟悉的 shell。除此之外,也可以使用许多其他 shell 工具,例如 sh、zsh、ksh、csh 和 tcsh等。

sh: sh 的全称是 Bourne shell。sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 shell。

bash: bash由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。

zsh: Zsh对Bourne shell做出了大量改进,同时加入了Bash、ksh及tcsh的某些功能,它兼容 bash,还有自动补全等好用的功能。2019年起,macOS的默认Shell从Bash改为Zsh

Shell的命令

  1. 查看当前Linux的全部Shell:cat /etc/shells

    1
    2
    3
    4
    5
    6
    7
    [heibanbai@heibanbai01 ~]$ cat /etc/shells
    /bin/sh
    /bin/bash
    /usr/bin/sh
    /usr/bin/bash
    /usr/bin/tmux
    /bin/tmux
  2. 查看当前使用的Shell:echo $SHELL或者echo $0

  3. 切换默认的Shell:chsh -s [shell的二进制文件路径],之后要重新登陆Shell才能生效哈。例如:切换为Bash:chsh -s /bin/bas 或 切换为Zsh:chsh -s /bin/zsh

Bash的配置文件

  • /etc/profile:为系统的每个用户设置环境信息,当用户第一次登录时会执行该文件里的命令。默认会直接调用/etc/bashrc。该文件的改动需要重启才能生效。
  • /etc/bashrc:为每一个运行bash shell的用户执行此文件。当bash shell被打开时,会读取并执行该文件中的命令。所以修改该文件后,重新打开Shell即可生效。
  • ~/.bash_profile:和/etc/profile类似,但是只对当前用户生效。
  • ~/.bashrc:和/etc/bashrc类似,但是只对当前用户生效。
  • ~/.bash_logout:当每次退出bash shell时,执行该文件。
  • ~/.bash_history:保存了历史命令。在Shell为Bash时,每次敲击命令时,都会保存在这个文件里

加载顺序:/etc/profile/etc/bashrc~/.bash_profile~/.bashrc

/etc/profile

配置系统环境,如: PATH、USER等变量,同时还包含一些在用户登录时执行的脚本,这些脚本由/etc/profile启动运行,当用户登录Linux系统时,bash将执行/etc/profile文件中的命令,这些命令帮助用户设置工作环境,然后再将控制权交给用户主目录下的~/.profile文件。当系统给出主提示符($PS1)后,用户就可以开始自己的工作。

/etc/bashrc

/etc/bashrc 是一个全局的 Bash 配置文件,用于定义系统中所有用户的 Bash shell 的默认行为和环境变量。它在用户登录时被执行,为用户的交互式 Bash shell 提供一些全局的设置。

具体来说,/etc/bashrc 文件可以定义全局的环境变量,这些变量将在用户登录后的 Bash shell 中生效。通过在文件中添加 export 语句,可以设置全局的环境变量,例如 PATH、LANG、PS1 等。/etc/bashrc 文件还可以定义全局的别名和函数,供所有用户的 Bash shell 使用。通过在文件中添加 alias 或 function 语句,可以创建全局的别名和函数,以简化命令的输入和执行。

此外,/etc/bashrc 文件还可以配置全局的 Shell 行为,例如设置默认的提示符、设置历史命令记录和历史命令的数量限制、配置自动补全等。它还可以导入其他的配置文件,例如 /etc/profile.d/*.sh/etc/bashrc.local 等。这些文件包含了更具体和个性化的设置,用于扩展和定制系统的全局 Bash 配置。

总的来说,/etc/bashrc 文件的作用是为系统中所有用户的 Bash shell 提供默认的环境变量、别名、函数和行为设置。它可以在用户登录时执行,确保所有用户共享相同的全局配置,并提供一致的 Shell 使用体验。

~/.bash_profile

在Shell中~/.bash_profile文件主要用于配置用户环境变量和启动程序。它只对单一用户有效,位于用户的家目录(~)下~/.bash_profile,当用户登录(login)时,~/.bash_profile文件会被执行,用于设置环境变量和启动程序。这个文件可以用于配置用户的PATH、HISTSIZE、HISTFILESIZE等环境变量的值。

此外,~/.bash_profile文件还可以包含一些用户专用的bash shell信息。它会在用户登录时由~/.bashrc文件执行。

~/.bashrc

~/.bashrc文件是bash shell的配置文件,用于定义用户登录后的Shell环境。它存储了用户特定的配置信息,例如自定义别名、环境变量、命令别名、Shell函数等。每个用户都可以在自己的家目录(~)下的~/.bashrc文件中添加自己的配置,以满足其个性化的需求.


蚂蚁再小也是肉🥩!


bash和sh
http://heibanbai.com.cn/posts/e9d31a13/
作者
黑伴白
发布于
2024年4月26日
许可协议

“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付