一、sh和bash的区别
sh和bash基本是一样,在我的linux环境查看,它俩是一样的:

[root@unis0612p02-165 run]# ls -al `which sh`
lrwxrwxrwx 1 root root 4  6月 23  2020 /usr/bin/sh -> bash

那么在shell脚本中的第一行如果声明了如下:

#!/bin/bash
#!/bin/sh

上面两行是一样的;

二、sh 和./的区别
一般我们是这样用的:
sh install.sh 或者./install.sh

这两个是有区别的:
第一个区别:
比如install.sh脚本中第一行声明的是

#!/usr/bin/python

那么如果使用./sh,就是会去使用脚本中声明的第一行的解释器来解释脚本的内容
如果没声明,那么就用系统默认的bash。如果这个时候你用sh,那么脚本中的第一行就没有用了,后面的是Python语言写的话,sh解释会报错。

如果你第一行声明是:

#!/bin/bash

那么sh 和./是没有区别的。

第二个区别是:权限问题
使用sh install.sh 如果这个脚本文件当前用户没有执行的权限也是能够执行的,但是如果使用./install.sh就会报错,没有权限,需要手动chmod +x加上权限才能执行成功。

三、source也是对文件进行执行的命令
和上面的sh bash ./不同的是,它是在当前的shell程序下去执行,而上面的三种是在当前的shell下重新开一个子shell进行执行,当前的shell就是他的父shell了,可能会有一些变量不能用用吧。

目前我用source install.sh 和bash install.sh sh install.sh ./install.sh效果是一样的。

借鉴别人写的挺好的文章:
https://blog.csdn.net/weixin_37569048/article/details/97764626?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-1.no_search_link&spm=1001.2101.3001.4242

shell中source、sh、bash、./的区别相关推荐

  1. linux shell bin sh,linux shell中#bin/sh的理解

    摘要 腾兴网为您分享:linux shell中#bin/sh的理解,支付旭尊,小熊到家,天天美剧,淘金宝等软件知识,以及维棠flv视频软件,usb抓包工具,红警2无敌,ucbug造梦西游4,壁纸工作室 ...

  2. linux shell中./a.sh , sh a.sh , source a.sh, . ./a.sh的区别

    在linux shell中, 执行shell script的方式有多种, 有什么区别呢? 现在用一个简单例子再来说下. a.sh的内容是: #! /bin/bash echo hello world ...

  3. shell中source命令与sh命令的区别

    一.source命令 1.1 source命令的使用方法 source filename.sh 文件没有可执行权限时,也可以使用source命令执行. source命令是在当前shell中执行的,并未 ...

  4. shell中source与sh区别

    shell中使用source conf.sh,是直接运行conf.sh的命令,不创建子shell,类似与html中include,而sh是则创建子shell, 子shell里面 的变量父shell无法 ...

  5. linux基础:shell中的sh与bash区别与常用命令

    目录 一,什么是sh和bash? 二,shell的基本用法 2.1,变量 2.2,算术运算 2.3,使用 bash 计算器在shell脚本中进行浮点运算 2.4,shell中的条件判断命令test和[ ...

  6. linux脚本中的exit,Shell中exit和return的区别讲解

    1.exit命令 exit命令是Shell内建命令,用于退出当前Shell进程.使用格式如下: exit [] 可以指定退出状态n,n的取值范围是0-255,一般情况下,0表示正常退出,非零表示异常退 ...

  7. ubuntu系统shell 中source: not found错误

    https://www.cnblogs.com/laien/p/8277617.html  shell脚本中含有source命令运行时提示 source: not found 测试: 运行 ls -l ...

  8. Shell 中 exit 和 return 的区别

    1.exit 命令 exit 命令是 Shell 内建命令,用于退出当前 Shell 进程.使用格式如下: exit [N] 可以指定退出状态 N,N 的取值范围是 0-255,一般情况下,0 表示正 ...

  9. 几种常见shell解释器(sh,bash,csh,tcsh,ash)以及bash的优点

    文章目录 shell解释器的定义 shell的分类 sh csh tcsh ash bash bash 的优点 shell解释器的定义 Unix/Linux上常见的Shell脚本解释器有bash.sh ...

最新文章

  1. java基础线程_Java基础之多线程没那么复杂!
  2. HDU - 2586 How far away LCA+tanjar离线算法
  3. NHibernate之旅(8):巧用组件之依赖对象
  4. 高速PCB设计知识问答
  5. zookeeper watch笔记
  6. Ubuntu 防火墙 ufw
  7. 【汇编优化】ARM Intrinsic优化
  8. 在装有windows跟ubuntu的机器上重新安装windows后修复ubuntu的grub
  9. Vue之单文件组件的数据传递,axios请求数据及路由router
  10. Hyperion神器之SmartView产品(下篇)
  11. STC8G七彩数字时钟、GPIO设置、DS1302使用、热敏电阻测温、SM5166P和MBI5024控制数码管显示
  12. shader变体是什么_一种Shader变体收集和打包编译优化的思路
  13. unity text颜色渐变
  14. R语言抽样并验证总体分别为正态分布、均匀分布、指数分布时样本均值的抽样分布
  15. 【学习笔记】欧拉筛法(线性筛素数)
  16. 【bat/batch】bat中的转义字符
  17. 微指令和指令(机器指令)有什么区别?
  18. java-01背包(动态规划)
  19. 在阿里云服务器中部署nodeBB项目(nodeBB系列一)
  20. 用matplotlib.pyplot绘制线形图

热门文章

  1. 在2016年度山东省计算机技能大赛中,学院在2016年山东省职业院校技能大赛中再获佳绩...
  2. Aviation turbofan starting model
  3. Java程序员工资尤其的高,具体原因是什么呢?
  4. Elastic Search Java API(文档操作API、Query DSL查询API)、es搜索引擎实战demo
  5. SVM之线性不可分与核技巧
  6. 德家:你知道吗?朋友圈里的微商传销正在疯狂蔓延
  7. OR-Tools工具介绍以及实战(从入门到超神Python版)
  8. ffmpeg安装及在java中的使用案例
  9. can‘t decrement vector iterator before begin
  10. 企业内部信息安全管理——(一)风险识别和管控