Linux Shell环境介绍 以及 zsh详细配置信息

Linux Shell环境介绍

本文介绍了Linux Shell环境,包括zsh的优点、配置信息、环境变量和持久化,以及使用SSH连接云主机的过程和终端的作用。zsh相比bash有更好的用户交互体验和更强的可定制性,支持更多的命令自动补全和更丰富的命令提示,支持更多的插件和主题,执行速度更快。在使用SSH连接云主机时,远程服务器为用户创建一个新的shell会话,作为用户的工作环境,并在新的shell会话中启动zsh shell进程。终端提供一个命令的输入输出环境,在Linux操作系统下使用组合键ctrl + alt + T打开的就是终端。

目录

Linux Shell环境介绍

认识Shell环境

Linux下的接口

zsh相关信息与配置

zsh的配置信息

zsh的环境变量

持久化

结合实例进行理解系统配置文件和个人用户配置文件的区别:

zsh相关文件的调用顺序

什么是终端?


认识Shell环境

Shell(壳,Linux内核的一个壳)是一种在Linux操作系统中使用的命令行解释器,是指“提供使用者使用界面” 的软,它允许用户与操作系统进行交互,执行各种任务,如运行程序、管理文件和目录等。Shell是一个很重要的工具,它可以通过命令行或脚本的方式来批量处理文件和数据,帮助用户提高工作效率。

Linux Shell环境介绍 以及 zsh详细配置信息_第1张图片

 操作系统的层级结构是为了使操作系统更加可靠、可维护和可扩展。将操作系统分层可以使操作系统的不同部分之间相互独立,从而降低了系统的复杂性和耦合性。

此外,层级结构还使得操作系统更加容易扩展和维护,因为每个层次只需要关注自己的职责和接口,而不需要考虑整个系统的实现细节。

  1. 硬件层:包含所有物理设备,CPU,RAM,HDD等。

  2. 内核层:系统核心功能,对软硬件资源进行管理

  3. shell层:提供给用户和应用程序的结构,通过该层,可以使用操作系统提供的各种功能,并对操作系统进行维护。

  4. 应用层:用用户提供了一套工具集,用于支持用户的各种需求,同时,用户也可根据自己的需求安装不Linu同的应用软件。

Linux下的接口

  1. shell环境:

a. Linux中,常见的Shell环境有sh、bash、zsh,当然还有更多其他的shell,每一个shell环境都有各自的优缺点,但本质都是为了给用户提供一个使用操作系统的接口。

  1. GUI环境:

a. 常见的GUI环境,有Windows,Mac OS.

b. Linux下的GUI

~GNOME:默认的界面是GNOME 3,由Red Hat公司开发,是一款简洁、易于使用的桌面环境。

~KDE:KDE(K Desktop Environment)是一款非常灵活、高度可配置的桌面环境,拥有许多功能和插件。

~Xfce:Xfce 是一款轻量级桌面环境,注重性能和易用性。

~LXDE:LXDE 是轻量级桌面环境,使用较少的系统资源,适合老旧计算机。

在使用Linux操作系统时,每个分支的Linux系统都可定制化的安装,也就是说,GUI环境并不是系统的标配,我们所使用的云主机,就是没有安装桌面环境的Linux系统。

本质上,GUI图形化界面,是一种特殊的Shell,GUI图形化界面,是将原先只能使用文本进行交互的模式,扩展为图形化的,可使用鼠标进行交互的方式,降低了用户使用计算机的门槛。


zsh相关信息与配置

zsh的配置信息

根据Linux中man zsh的输出,以下是zsh相关的文件及其用途:

注意,根据安装方式或系统的不同有些zsh的配置文件在 /etc/zsh/ 中。

  • 全局配置文件:

    • /etc/zshenv:系统级别的zsh配置文件,用于设置全局的环境变量和路径。

    • /etc/zprofile:zsh登录时读取的系统级别的配置文件,用于设置全局的环境变量和路径。

    • /etc/zshrc:zsh启动时读取的系统级别的配置文件,用于设置全局的别名和函数。

    • /etc/zlogin:zsh登录时读取的系统级别的配置文件,用于在登录时运行特定的命令。

    • /etc/zlogout:zsh退出时读取的系统级别的配置文件,用于在退出时运行特定的命令。

    • /usr/share/zsh//:系统级别的zsh配置文件目录,存储了zsh的全局配置文件和函数库。

    • /usr/share/zsh/*/functions:存储了系统级别的函数库。

    • /usr/share/zsh/*/site-functions:存储了系统级别的站点函数库,用于存放第三方软件包的函数库。

    • /usr/share/zsh/*/scripts:存储了系统级别的脚本文件,用于存放系统级别的脚本文件。

  • 个人配置文件:

    • ~/.zshenv:用户级别的zsh配置文件,用于设置个人的环境变量和路径。

    • ~/.zprofile:zsh登录时读取的用户级别的配置文件,用于设置个人的环境变量和路径。

    • ~/.zshrc:zsh启动时读取的用户级别的配置文件,用于设置个人的别名和函数。

    • ~/.zlogin:zsh登录时读取的用户级别的配置文件,用于在登录时运行特定的命令。

    • ~/.zlogout:zsh退出时读取的用户级别的配置文件,用于在退出时运行特定的命令。


zsh的环境变量

  • ZDOTDIR:用于指定zsh的配置文件目录,可以将其设置为其他位置,例如/etc/zsh或~/.config/zsh/等。

  • PATH:用于设置可执行文件的搜索路径,当用户输入一个命令时,zsh会按照PATH环境变量所指定的路径顺序来查找可执行文件。

  • HISTFILE:用于指定历史记录文件的路径,默认为~/.zsh_history。

  • HISTSIZE:用于设置历史记录条目的数量,默认为1000。

  • SAVEHIST:用于设置保存历史记录的条目数量,默认为1000。

  • PROMPT:用于设置命令提示符的格式,例如%n@%m:%~%#表示用户名@主机名:当前目录#。

  • PS1:用于设置主命令提示符的格式。

  • PS2:用于设置次级命令提示符的格式。

  • PS3:用于设置select命令的提示符格式。

  • PS4:用于设置调试输出的格式。

  • LANG:用于设置当前系统的语言环境。

  • LC_ALL:用于设置所有区域设置的默认值。

  • LC_CTYPE:用于设置字符集编码方式,例如UTF-8。

  • LC_MESSAGES:用于设置系统消息的语言环境。

  • LC_COLLATE:用于设置排序规则。

  • LC_NUMERIC:用于设置数字格式。

  • LC_TIME:用于设置时间格式。

  • LSCOLORS:用于设置ls命令输出的颜色。

  • LS_COLORS:用于设置ls命令输出的颜色。

  • MAIL:用于指定邮件文件的路径。

  • MAILCHECK:用于设置检查新邮件的时间间隔。

  • TMOUT:用于设置自动注销的时间。

  • VISUAL:用于设置文本编辑器的默认值。

  • EDITOR:用于设置文本编辑器的默认值。

  • CDPATH:用于设置cd命令搜索目录的路径。

持久化

在zsh中,可以通过将环境变量写入~/.zshrc~/.zshenv文件中来实现环境变量的持久化。这两个文件是zsh启动时会自动读取的配置文件,可以在其中设置需要的环境变量。其中,~/.zshrc文件会在每次新开一个终端窗口时被读取,而~/.zshenv文件则会在每次启动zsh时被读取。需要注意的是,如果同时设置了同一个环境变量,~/.zshrc文件中的设置会覆盖~/.zshenv文件中的设置。


结合实例进行理解系统配置文件和个人用户配置文件的区别:

1. 当我们打开/etc/zprofile,在其中输入echo "I'm in /etc/zsh/zprofile.",无论我们使用什么用户再次登录,这时终端都会自动输出:I'm in /etc/zsh/zprofile.

2.当我们打开/etc/zlogin,在其中输入echo "I'm in /etc/zsh/zprofile.",无论我们使用什么用户再次登录,这时终端都会自动输出:I'm in /etc/zsh/zlogin.

3.当我们打开.zshrc,在其中输入echo "I'm in .zshrc",当我们使用当前用户创建一个新的zsh的终端的时候,这时终端都会自动输出:I'm in .zshrc

 4.当我们打开.zlogin,在其中输入echo "I'm in .zlogin.",当我们使用当前用户重新登录系统的时候,这时终端都会自动输出:I'm in .zlogin.

假设已经配置好了上面的四条,当我使用Royi登录用户的时候:

 当我使用其他用户登录的时候:

 对于.zprofile和.zlogin的解释:.zprofile和.zlogin实际上是完全相同的,为login shell配置环境,只是读取时间不同。
.zprofile由Bash里的.bash_profile衍化而来,.zlogin则是从CSH的.login变化来的。因为mac Mojave版本系统及之前都是以Bash为默认的shell,所以建议用.zprofile。

当我使用zsh命令打开一个新的终端时:

注意,我在.zshrc文件中的配置是:

echo ”You had opened a new terminal.“

zsh相关文件的调用顺序

调用顺序(自上向下):

/etc/zshenv
~/.zshenv
/etc/zprofile
~/.zprofile
/etc/zshrc
~/.zshrc
/etc/zlogin
~/.zlogin
~/.zlogout
/etc/zlogout

也就是说,系统配置文件可以看作是默认的配置,当你设置了个人文件的配置之后,系统文件的配置就失效了。

什么是终端?

终端(termimal)= tty(Teletypewriter, 电传打印机),作用是提供一个命令的输入输出环境,在linux操作系统下使用组合键ctrl + alt + T打开的就是终端,可以认为terminaltty是同义词。

用户在shell中提交命令,shell负责接收用户的命令,并扮演命令解析器的角色。

当你打开一个Terminal时,操作系统会将TerminalShell关联起来,当我们在Terminal中输入命令的时候,Shell就负责解释命令。

你可能感兴趣的:(linux,服务器,运维)