shell——配置文件
1.shell的定义
shell 单词的本意是“壳子”,在计算机领域一样可以理解为机器外面的一层壳,目的是进行用于人机交互,本质上是命令解释器。只要是人与电脑之间交互的接口,就可以称为 shell。
2.分类
- zsh
很多人的 mac 中会使用 zsh 而不是 bash,一大半是因为 oh-my-zsh 这个配置集,它兼容 bash,还有自动补全等好用的功能。 - sh 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 shell。
- csh
sh 之后另一个广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,这个 shell 的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。 - tcsh
tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。
ash一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。 - bash
bash由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。bash 兼容 sh 意味着,针对 sh 编写的 shell 代码可以不加修改地在 bash 中运行。尽管如此,bash 和 sh 还是有一些不同之处:一方面,bash 扩展了一些命令和参数;另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。 -
下文主要介绍zsh,bash
3.查看shell版本
在现代的 Linux 上,sh 已经被 bash 代替,
/bin/sh
往往是指向/bin/bash
的符号链接。如果你希望查看当前 Linux或MacOS的默认shell,那么可以输出 shell 环境变量:echo $SHELL
查看自己系统安装了哪些版本的shell:
cat /etc/shells
4.Mac系统中shell的使用(zsh bash)
shell 在启动时都会去找配置文件,然后运行它。在Mac上,shell的配置文件主要取决于您当前使用的shell。
(1)zsh
从macOS Catalina开始,Mac使用zsh作为默认登录Shell和交互式Shell。
以下是关于Mac上zsh shell配置文件的一些详细信息:
- ~/.zshrc:这是zsh启动时加载的配置文件。它包含用于配置新打开的shell的命令。通常,您会在此文件中设置环境变量、别名等。每次打开新的zsh终端窗口或标签页时,都会执行此文件。
- **/.zprofile**:这个文件在用户登录时执行,并且只执行一次(与/.bash_profile类似)。但请注意,由于zsh在每次启动新shell时都会加载/.zshrc,因此许多用户选择在/.zshrc中设置大部分配置。
- **/.zlogin**:这是zsh在用户登录时执行的另一个文件,但它通常不如/.zprofile常用。
修改配置文件后使其生效:
如果您修改了上述任何配置文件,您可以使用以下命令使更改立即生效(无需重启终端):
source ~/.zshrc
或者,如果您修改了/.zprofile或/.zlogin,并希望它们立即生效,您可能需要注销并重新登录,或者重新启动计算机。
(2)bash
~/.bash_profile:
它是一个全局Bash脚本文件,通常用于存储默认设置或在每次启动Bash时执行的命令。
这是一个在登录时执行的脚本文件,主要用于初始化账户设置并加载其他配置文件。~/.bash_login :
- ~/.bashrc :于配置函数或别名。
配置文件的加载规则 : ~/.bash_profile => ~/.bash_login。 ~/.bashrc 没有上述规则,它是bash shell打开的时候载入的。
区别:
~/.bash_profile | ~/.bashrc | |
作用范围 | 用户级别,只对当前用户生效 | 用户级别,只对当前用户生效 |
加载时机 | 当用户登录时,Bash shell 会加载 ~/.bash_profile。它通常用于设置用户特定的环境变量和执行用户特定的初始化脚本。 | 每次启动一个新的非登录交互式 shell 时,Bash shell 会加载 ~/.bashrc。例如,当你在终端中打开一个新的 shell 会话时,~/.bashrc 会被加载。 |
用途 | 适用于需要对单个用户生效的配置,例如用户特定的环境变量、别名等。 | 适用于需要对单个用户的每个交互式 shell 会话生效的配置,例如别名、函数、命令提示符设置等。 |
- /etc/.profile : 用于设置系统级的环境变量和启动程序,在这个文件下配置会对所有用户生效。当用户登录时,
/etc/profile
会被所有兼容 POSIX 的 shell(如 Bash、sh)加载。它通常用于设置系统范围的环境变量和执行系统范围的初始化脚本。
切换shell:
如果您想更改默认的shell,可以使用
如果您想更改默认的shell,可以使用
chsh
命令。例如,要将默认shell更改为bash,可以输入:chsh -s /bin/bash
总结:
你安装的一些脚本,如果想让它能够全局运行,就需要在配置文件中设置路径。
常见错误:
1.把配置写在了错误的配置文件里。
2.配置文件没有生效。
解决方案:
在配置shell(最常见的是配置默认命令)之前,使用
echo $SHELL
,确认自己现在用的是什么shell后,再去编辑对应的配置文件,并且别忘了使配置文件生效。附上vim编辑器的常用命令,在终端 输入
vim 文件名
就会在终端打开该文件,这时输入 i 即可进入编辑模式。# vim常用的命令: $ vim [filename.ext] $ # 输入 i 回车进入编辑模式 $ # 编辑内容... $ # 按 esc 键退出编辑模式,然后输入以下带冒号:的命令 $ :wq 保存后退出vi,若为 :wq! 则为强制储存后退出(常用) $ :w 保存但不退出(常用) $ :w! 若文件属性为『只读』时,强制写入该档案 $ :q 离开 vi (常用) $ :q! 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix