10.docker exec -it /bin/bash报错解决、sh与bash区别

报错

进入容器时,报如下错误

dockeruser@dell-PowerEdge-R740:~$ docker exec -it daf2 /bin/bash
OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown

解决

将bin/bash换成bin/sh

dockeruser@dell-PowerEdge-R740:~$ docker exec -it daf2 /bin/sh

分析

制作镜像时使用了精简版,只装了sh命令,未安装bash。

拓展

(1)shell简介

Shell是一种应用程序,该应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 是一个用 C 语言编写的程序,是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

sh(Bourne Shell)是一个早期的重要shell,1978年由史蒂夫·伯恩编写,并同Version 7 Unix一起发布。
bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell。1987年由布莱恩·福克斯创造。主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。

(2)#!

  • #! 是一个特殊标记,说明这是一个可执行的脚本。除了第一行,其他以#开头的都不再生效,为注释。
  • #! 后面是脚本的解释器程序路径。这个程序可以是shell,程序语言或者其他通用程序,常用的是bash、sh。

(3)sh与bash区别

  • sh 跟bash的区别是bash是否开启POSIX模式。
  • sh是bash的一种特殊的模式,sh就是开启了POSIX标准的bash, /bin/sh 相当于 /bin/bash --posix。
  • 在Linux系统上/bin/sh往往是指向/bin/bash的符号链接
ln -s /bin/bash /bin/sh
  • sh 遵循POSIX规范:“当某行代码出错时,不继续往下解释”。bash 就算出错,也会继续向下执行。

hello.sh脚本:

#!/bin/sh
source err
echo "sh hello"

hello2.sh脚本:

#!/bin/bash
source err
echo "bash hello2"

输出结果:

[root@admin]# bash hello2.sh 
hello2.sh: line 2: err: No such file or directory
hello2
[root@admin]# sh hello.sh 
hello.sh: line 2: source: err: file not found
[root@admin]# bash --posix hello2.sh 
hello2.sh: line 2: source: err: file not found

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常用的Web应用程序的自动测试工具有哪些

在Web应用程序的自动化测试领域,有许多流行的工具可供选择。以下是一些常用的Web自动化测试工具: 1. Selenium - Selenium是最流行的开源Web应用程序自动化测试套件之一。 - 它支持多种编程语言,如Java、C#、Python、Ruby等。 …

Python——multiprocessing报错:TypeError: cannot pickle ‘_thread.lock‘ object

多进程报错 Traceback (most recent call last):File "C:\Users\miaochangbin\PycharmProjects\eduCrawler\main.py", line 138, in <module>p.start()File "D:\Program Files\python\lib\multiprocessing\process.py", line 121, in startself._po…

C-MAPSS涡扇发动机仿真数据(PHM2008)

数据集介绍 在开始介绍数据集之前&#xff0c;先帮大家理清一下涡扇发动机的数据&#xff08;NASA提供&#xff0c;本文中称为数据集A&#xff09;和PHM2008竞赛数据&#xff08;本文称为数据集B&#xff09;的关系。之所以将数据集A和数据集B放在一篇文章中&#xff0c;是因为…

【论文解读】transformer小目标检测综述

目录 一、简要介绍 二、研究背景 三、用于小目标检测的transformer 3.1 Object Representation 3.2 Fast Attention for High-Resolution or Multi-Scale Feature Maps 3.3 Fully Transformer-Based Detectors 3.4 Architecture and Block Modifications 3.6 Improved …

MT8788|MTK8788安卓核心板参数_4G联发科MTK模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块。该模块采用了联发科AIOT芯片平台&#xff0c;具有长达8年的生命周期。MT8788模块内置了12nm制程的八核处理器&#xff0c;包括4个Cortex A73和4个Coretex A53&#xff0c;主频最高可达2.0GHZ。标配内存为4GB64GB&#xff0c…

下载图片到本地,多个图片压缩后下载到本地

单个图片的下载&#xff1a; 第一种 async downLoadImage() {let response await fetch(https://img-home.csdnimg.cn/images/20231127111739.png);let data await response.blob();let url window.URL.createObjectURL(data);let link document.createElement(a);link.hr…

01 Linux简介

Linux背景 发展史 linux从哪来的&#xff1f;怎么发展的&#xff1f;得从UNIX说起 1968年&#xff0c;一些来自通用电气公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念1969-1970年&am…

Json的简介与基本使用

JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。它基于JavaScript编程语言的一个子集&#xff0c;但JSON是独立于语言的文本格式&#xff0c;代码中可以使用各种语言来…

智能运维服务指的是哪些?智能运维阶段有哪些

智能运维服务通常包含哪些关键组成部分&#xff1f;它们在IT管理中的作用和重要性&#xff1f;智能运维的发展可以分为哪些主要阶段&#xff1f;每个阶段的核心技术或实践有哪些&#xff0c;它们是如何推动运维工作向更高水平的自动化和智能化发展的&#xff1f; 智能运维服务…

Linux离线安装插件

当公司Linux环境无外网情况下&#xff0c;需要先下载好离线安装包&#xff0c;然后上传到服务器&#xff0c;进行安装。 这里介绍一个下载插件安装包的网站&#xff0c;可以搜索到lrzsz、lsof、telnet、unzip、zip等安装包 搜索到想要的插件安装包后&#xff0c;下载并上传到服…

Ubuntu20.04安装Carla0.9.15

文章目录 环境要求下载Carla解压Carla运行Carla测试官方用例创建python环境安装依赖包案例&#xff1a;生成车辆案例&#xff1a;测试自动驾驶 参考链接 环境要求 系统配置要求&#xff1a; 至少3G显存的GPU&#xff0c;推荐3060及以上的显卡进行Carla拟真。预留足够的硬盘空…

Tomcat线程池原理(上篇:初始化原理)

文章目录 前言正文一、从启动脚本开始分析二、ProtocolHandler 的启动原理三、AbstractEndPoint 的启动原理四、创建默认线程池五、参数配置原理5.1 常规的参数配置5.2 自定义线程池5.3 测试自定义线程 前言 在Java Web的开发过程中&#xff0c;Tomcat常用的web容器。SpringBo…

C#知识点-13(进程、多线程、使用Socket实现服务器与客户端通信)

进程 定义&#xff1a;每一个正在运行的应用程序&#xff0c;都是一个进程 进程不等于正在运行的应用程序。而是为应用程序的运行构建一个运行环境 Process[] pros Process.GetProcesses();//获取电脑中所有正在运行的进程//通过进程&#xff0c;直接打开文件//告诉进程&…

cmd命令开启windows桌面远程控制并设置防火墙允许远程

cmd命令开启桌面远程控制 1、开启之前&#xff1a; 2、使用管理员身份运行cmd 3、执行cmd命令 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Control\Terminal server" /v fDenyTSConnections /t REG_DWORD /d 0 /f4、如果这台电脑的防火墙打开&#xff…

Android14 InputManager-InputManagerService环境的构造

IMS分为Java层与Native层两个部分&#xff0c;其启动过程是从Java部分的初始化开始&#xff0c;进而完成Native部分的初始化。 □创建新的IMS对象。 □调用IMS对象的start&#xff08;&#xff09;函数完成启动 同其他系统服务一样&#xff0c;IMS在SystemServer中的ServerT…

股票K线认知从形态到逻辑,仓位管理与交易体系实战

一、教程描述 本套教程内容分为三个部分&#xff0c;1、基础篇&#xff1a;讲的都是干货基础&#xff0c;有些是书本上没有的&#xff0c;通过对基础知识的掌握&#xff0c;对技术形态会有更深的理解&#xff0c;比如集合竞价、K线指标、盘中看盘技巧等等。2、交易篇&#xff…

boolean在Java中占几个字节?(企业真题)

boolean 占几个字节 编译时不谈占几个字节。 但是JVM在给boolean类型分配内存空间时&#xff0c;boolean类型的变量占据一个槽位(slot(狭槽、窄口、扁口)&#xff0c;等于4个字节)。 细节&#xff1a;true:1 false:0 拓展&#xff1a;在内存中&#xff0c;byte\short\char\boo…

express静态资源访问错误 xxx.js was blocked due to MIME type (“text/html“)

归根结底原因是没有静态资源xxx.js的访问权限 如何在express中给静态资源添加访问权限&#xff0c;我在express js中添加以下语句解决了该问题&#xff1a; app.use(express.static(public)); 此时访问public文件夹中的xxx.js文件时&#xff0c;只需要使用路径 http://127.0…

备战蓝桥杯 Day9(背包dp)

01背包问题 1267&#xff1a;【例9.11】01背包问题 【题目描述】 一个旅行者有一个最多能装 M&#xfffd; 公斤的背包&#xff0c;现在有 n&#xfffd; 件物品&#xff0c;它们的重量分别是W1&#xff0c;W2&#xff0c;...,Wn&#xfffd;1&#xff0c;&#xfffd;2&#…

CentOS升级python

1、下载python39 https://mirrors.huaweicloud.com/python/3.9.0/Python-3.9.0.tgz2、拷贝到Linux环境&#xff08;当然也可以直接在Linux环境使用wget直接下载&#xff09; 先安装一下依赖&#xff0c;不然编译会有问题 sudo yum -y install zlib-devel bzip2-devel openssl…