Linux sh、bash和source

作者 by admin / 2022-05-07 / 暂无评论 / 84 个足迹

Linux Shell中shbash的区别

什么是Shell?

shell的中文意思就是贝壳,其实比较类似于我们内核的壳。简而言之就是只要能够操作应用程序的接口都能够称之为shell。狭义的shell指的是命令方面的软件,广义的shell则包括图形界面

Shell版本·

早在Unix年代,发展者众多,所以shell就有了不同的许多版本,比如h,C Shell,K Shell,Tcsh等,每一种Shell都各有各的特点。当然也有我们的bash,bash这个shell是基于Bourne Shell的增强版本,也是基于CNU的架构下发展出来的。

sh和bash的区别

  • sh是 Bourne Shell,这个是Unix标准的默认shell
  • bash是 Bourne Again Shell是Linux标准的默认Shell,它基于Bourne Shell,吸收了C Shell 和 Korn Shell的一些特性,bash完全兼容Bourne Shell,也就是说sh的脚本可以在bash中执行,但bash的脚本在sh上执行可能会报错。
  • bash是sh的增强版本,在我们平时实地操作中如果sh这个命令不灵了我们应当使用bash。(其实我有个不清楚的问题,Linux 终端下连接docker容器时,使用/bin/bash有时会连接失败,但用/bin/sh可以连接,通过 'docker container ls | grep xxx' 查询,我感觉应该是docker命令解释器的问题.).

bash和source

大二有个hadopp课程,因为机房原因每次上课都需要重新配置jdk、hadoop、hive等环境,所以在写脚本的时候刷新环境变量困扰了我、在一位大数据方向的朋友帮助下和查阅资料中,了解了bash和source。

bash和source的区别
  • 在使用bash FileName时,它会自动运行一个新的子shell,并读取执行FileName文件中的命令,俗称跑脚本。其shell会与父shell和其他子shell相互独立与并行,这就会使脚本安装jdk、hadoop等应用时,会导致环境变量未刷新的问题。
  • 在使用source FileName,它会在当前bash环境下读取执行FileName文件中的命令。

注:本文章大多是以个人实践学习和理解写出的,如有错误望指出。

独特见解