ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

[转载] shell、bash 和 zsh 等词的真正含义

2020-02-04 18:07:28  阅读:245  来源: 互联网

标签:解释器 shell 语言 配置文件 zsh bash


文章转载自知乎作者阿德的文章《你明白 shell、bash 和 zsh 等词的真正含义吗?》,原文地址在这里


导言

最近花了点时间,把和 shell 有关内容都整理了一遍。如果你对这方面有些疑惑,这篇文章可以让你更好地理解它们的含义。阅读时间大概5分钟。


解释与编译

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


terminal

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


shell 概念

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


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。


类型

常见的 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后,再去编辑对应的配置文件 *


总结

虽然这些概念不见得会立即提高我们的工作效率,但是对它们的理解有助于我们在黑框框里输入东西时更加心中有数。

编辑于 2018-03-03


原文地址:

https://zhuanlan.zhihu.com/p/34197680

标签:解释器,shell,语言,配置文件,zsh,bash
来源: https://www.cnblogs.com/awpatp/p/12260299.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有