热搜:前端 nest neovim nvim

5分钟了解shell

lxf2023-05-15 01:08:49

Hi,我是 Lem,最近了解和整理 shell 有关内容,在此进行一些记录;我使用的是 macos 系统,以下的操作都是基于该操作系统:

在了解什么是shell之前,是否知道你电脑里安装了哪些shell和正在使用哪个shell呢?

  • 查看已安装 shell
    输入 cat /etc/shells
ζ cat /etc/shells                                               
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/zsh
  • 查看默认启动的 shell
    输入 echo $SHELL
ζ echo $SHELL                                                   
/usr/local/bin/zsh

什么是 shell?

shell 是一个命令行解释器,顾名思义就是机器外面的一层壳,用于人机交互,只要是人与电脑之间交互的接口,就可以称为 shell。表现为其作用是用户输入一条命令,shell 就立即解释执行一条。不局限于系统、语言等概念、操作方式和表现方式等。 比如我们平时在黑框框里输入命令,叫 command-line interface (CLI);屏幕上有各种图标,能进行点击的,如window的桌面系统,叫graphical user interface (GUI)

解释与编译

编程语言没有编译型和解释型的区别,只能说某个语言常见的执行方式为编译成新代码执行解释器解释执行
编译器的输入是A语言的源代码,而输出是B语言;比如C++,被编译成汇编语言;
解释器的输入是A语言的源代码,它直接执行A语言;一般解释器的内部实现是一个编译器加一个虚拟机,编译器把输入语言编译成中间语言,虚拟机直接执行中间语言。

Interactive 和 Non-interactive

Interactive,如果你打开 terminal,在里面输入 bash 代码,回车得到输出,你就是在运行一个 Interactive shell,它的特征是可以让用户输入,然后直接把输出打到界面上;如果你运行一个包含了若干行的 shell 脚本,这些 shell 代码就运行在Non-interactive shell 中。

Login 和 Non-login

login shell 是指登录系统后所获得的顶层 shell,比如最常用的 ssh 登录,登录完后得到一个 login shell
如果已经登录了桌面电脑,打开 terminal 进入的 shell 就是 Non-login shell。

terminal

一个程序,是界面上打开的黑框框本身,比如 iTerm2。shell 运行于其中。

iTerm2

地址:github.com/gnachman/iT…

作为 mac 上首选用来替换默认终端的 iTerm2 自然也无需过多介绍,它拥有超多的特性,比如:分割面板、快捷键增强、优化的搜索、自动完成、粘贴历史、高度可配置等等,它拥有超多的主题,主题的 star 数量甚至超过本体的 star 数量。功能介绍:iterm2.com/features.ht… 丰富主题:github.com/mbadolato/i…

常见的 shell

常见的 shell 解释器有 sh、bash这两种,其他的 ksh、csh 和 zsh 等。Mac OS 中默认安装了以上所有类型,Windows 需要自行安装,Linux 更不用说了。就像上面说的,只要一门语言有解释器,就可以作为 shell 使用。比如Java 有第三方解释器 Jshell,PHP有 PHP Shell。如果你用过 windows,那你对 cmd 这个词一定不陌生,它是 windows shell,官方名称叫做 command interpreter。

bash

Bash 是最常见的 shell,Mac 中默认 shell 就是 bash。
[bash官网这篇文章]描述了唤起 bash shell 时加载的不同文件:login shell 加载 ~/.bash_profile ,而non-login shell 加载 ~/.bashrc 。

zsh

很多人的 mac 中会使用 zsh 而不是 bash,一大半是因为 oh-my-zsh 这个配置集,它兼容 bash,还有自动补全等好用的功能。zsh 的配置文件~/.zshrc

配置 shell

如上所说,shell 在启动时都会去找配置文件,然后运行它。你安装的一些脚本,如果想让它能够全局运行,就需要在配置文件中设置路径。有过设置路径后还是不管用的经历吗?多半是因为把配置写在了错误的配置文件里。 ** 应该在配置shell(最常见的是配置默认命令)之前,使用 echo $SHELL,确认自己现在用的是什么shell后,再去编辑对应的配置文件 **

总结

了解这些概念跟我们的日常工作关系不大,但是学习无止境,知道更多才能融会贯通。

本网站是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 本网站还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 除此之外,本网站还拥有一个活跃的社区,您可以在社区中与其他前端开发者交流技术、分享经验、解决问题。我们相信,社区的力量可以帮助您更好地成长和进步。 在本网站中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!