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
/etc/profile
(系统级(全局)配置文件):此文件为系统的所有登录用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。~/.bash_profile
:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的
.bashrc
文件。
此文件类似于/etc/profile
,也是需要需要重启才会生效,/etc/profile
对所有用户生效,~/.bash_profile
只对当前用户生效!~/.profile
:(针对个人)若bash是以login方式执行时,读取~/.bash_profile
,若它不存在,则读取~/.bash_login
,若前两者不存在,读取~/.profile
。另外,图形模式登录时,此文件将被读取,即使存在~/.bash_profile
和~/.bash_login
。
~/.zshrc
:无论登录和非登录用户都可以读取
2.2. 非登录Shell
/etc/bashrc
(系统级(全局)配置文件):为每一个运行bash shell的用户执行此文件, 当bash shell被打开时或在用户主目录下找不到.bashrc时,就会读取这该文件。~/.bashrc
:该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)。
此文件类似于/etc/bashrc
,不需要重启生效,重新打开一个bash即可生效,/etc/bashrc
对所有用户新打开的bash都生效,但~/.bashrc
只对当前用户新打开的bash生效。但一般 来说都会在~/.bash_profile
里调用~/.bashrc
脚本以便统一配置用户环境。
~/.bashrc
等中设定的变量(局部)只能继承/etc/profile
中的变量,他们是"父子"关系.~/.bash_logout
:当每次退出系统(退出bash shell)时,执行该文件。~/.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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?