Linux命令行及Shell配置

Linux命令行及Shell配置

1. Shell命令行

  • bash是macOS Mojave及更低版本中的默认Shell
  • zsh从macOS Catalina版开始,作为默认登录Shell和交互式Shell
  • zsh与Bourne Shell(sh) 高度兼容,并且与bash基本兼容,但存在一些差别。要进一步了解zsh及其全面的命令行完成系统,请在终端中输入man zsh
  • 如何查看自己使用的是哪一个shell: echo $SHELL
  • 查看系统安装了哪些shell: cat /etc/shells
  • shell自动补全功能:bash和zsh;zsh启动优化

2. Bash Shell

Bash Shell有两种基本模式:

  • login shell(登录Shell): 就是需要输入用户名及密码登录的shell,如开机shell登录、ssh登录、su - username(从root切换到其他用户时无需密码)
  • non-login shell: 无需输入密码,如bash、su username、图形界面打开bash
  • bashrc用于交互式non-login shell,而profile用于交互式login shell,系统中存在许多bashrc和profile文件
  • 注意: 不要轻易修改/etc/environment文件

2.1. 登录Shell

  1. /etc/profile(系统级(全局)配置文件):此文件为系统的所有登录用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。
  2. ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的
    .bashrc文件。
    此文件类似于/etc/profile,也是需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile 只对当前用户生效!
  3. ~/.profile:(针对个人)若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。另外,图形模式登录时,此文件将被读取,即使存在~/.bash_profile~/.bash_login
    ~/.zshrc:无论登录和非登录用户都可以读取

2.2. 非登录Shell

  1. /etc/bashrc(系统级(全局)配置文件):为每一个运行bash shell的用户执行此文件, 当bash shell被打开时或在用户主目录下找不到.bashrc时,就会读取这该文件。
  2. ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)。
    此文件类似于/etc/bashrc,不需要重启生效,重新打开一个bash即可生效, /etc/bashrc对所有用户新打开的bash都生效,但~/.bashrc只对当前用户新打开的bash生效。但一般 来说都会在~/.bash_profile里调用~/.bashrc脚本以便统一配置用户环境。
    ~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.
  3. ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件。
  4. ~/.bash_history:是bash shell的历史记录文件,里面记录了你在bash shell中输入的所有命令。可通过HISSIZE环境变量设置在历史记录文件里保存记录的条数。alias l = ‘ls -l’是设置别名的语句,把它放在这些配置文档中就可使我们能用简单的’l’命令,代替’ls -l’命令。

3. zsh Shell

  • 从macOS Catalina版开始,您的Mac将使用zsh作为默认登录Shell和交互式Shell
  • ~/.zprofile 的作用与 ~/.bash_profile 相同,并且在登录时运行(包括通过SSH运行)
  • ~/.zshrc 的作用与 ~/.bashrc 相同,并针对每个新的终端会话运行

3.1. 更改默认Shell

4. 配置文件的加载顺序

4.1. MacOS

macOS下打开的shell是登录式交互shell,登录Shell(不管是不是交互式的)文件加载顺序如下:

  • 首先明确,读取~/.bash_profile,该文件便会去读取~/.bashrc,而~/.bashrc又会去读取/etc/bashrc。所以只要读取~/.bash_profile,便会同时读取~/.bashrc/etc/bashrc
  • /etc/profile
  • ~/.bash_profile(如果安装了zsh,则.bash_profile文件中的环境变量就无法起到作用,会加载~/.zprofile,这里面可以配置python环境变量等)
  • ~/.bash_login
  • ~/.profile
posted @   风之夭夭  阅读(120)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示