Linux sh、bash和source
Linux Shell中sh
和bash
的区别
什么是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文件中的命令。
注:本文章大多是以个人实践学习和理解写出的,如有错误望指出。
版权申明
本文系作者 @admin 原创发布在安忆笔记站点。未经许可,禁止转载。
暂无评论数据