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

这篇具有很好参考价值的文章主要介绍了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"

输出结果:文章来源地址https://www.toymoban.com/news/detail-844641.html

[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

到了这里,关于10.docker exec -it /bin/bash报错解决、sh与bash区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kafka/bin/kafka-run-class.sh: line 342: exec: java: not found

    本来jps看了下,kafka和zookeeper都起来了, 手痒,非要换宝塔的进程守护管理器,选目录为/home/kafka,命令为/home/kafka/bin/zookeeper-server-start.sh  /home/kafka/config/zookeeper.properties 就在日志里看到 kafka/bin/kafka-run-class.sh: line 342: exec: java: not found 网上搜了大量的资料,有的说 原因:jav

    2024年02月12日
    浏览(41)
  • mac安装docker报错bash: /usr/local/bin/docker: No such file or directory

    按照网上查的命令用brew安装(安装命令如下:) #brew install --cask  docker 安装结果也显示安装成功: 然后按照各种贴子的说明去检查docker版本时(docker --version)会报错  bash: /usr/local/bin/docker: No such file or directory ,这一下让我很懵,不是都是说brew安装后就可以了吗,我怎么报错了,

    2024年02月02日
    浏览(50)
  • Docker exec进入容器后不显示容器ID,显示bash-4,4#的解决方法

    错误情景 : docker exec -it 6829a4eaef65 bash 命令进入容器, 不是出现 [root@6829a4eaef65 /]# 而是出现了bash-4.4# 产生原因 :命令行显示-bash-4.2# 的原因是在当前用户的root目录缺少了两个文件 解决方法: 1. 执行命令: docker exec -it 6829a4eaef65 bash 进入容器 2. 执行命令: 执行命令,持久化

    2024年02月09日
    浏览(48)
  • sh、bash 和 dash 几种 shell 的区别是什么?

    在调试基于 Debian 的 Docker 镜像时,进入容器后在终端中按上箭头键后终端显示^[[A,下箭头显示^[[B,右箭头显示^[[C,左箭头显示^[[D,按删除键也是显示了几个特殊字符。很奇怪,仔细看了一下,原来进入容器的时候终端使用的 sh,切换为 bash 就好了(在终端输入 bash 命令就

    2024年02月09日
    浏览(47)
  • dockerfile报错:“/bin/sh -c yum -y install“

    主要错误 ERROR: failed to solve: process “/bin/sh -c yum -y install vim” did not complete successfully: exit code: 1 主要是容器版本问题,推荐使用Centos7 比如我的dockerfile 文件

    2024年02月22日
    浏览(42)
  • 执行docker- compose命令遇到-bash: /usr/local/bin/docker-compose: 无法执行二进制文件 问题的一种解决方法

    一、问题描述 当安装好docker-compose并添加执行权限后,执行命令docker-compose 相关命令时出现 -bash: /usr/local/bin/docker-compose: 无法执行二进制文件 二、解决思路 应该是安装包有问题,网上找了几种重新安装方法途径,还是会出现这个问题,最终找到一种可靠重新安装的解决方法

    2024年02月08日
    浏览(58)
  • 成功解决/bin/sh: cc: command not found和/bin/sh: g++: command not found

    成功解决/bin/sh: cc: command not found和/bin/sh: g++: command not found 目录 解决问题 解决思路 解决方法 make: cc: Command not found /bin/sh: cc: command not found expr: syntax error expr: syntax error make: cc: Command not found I llama.cpp build info: I UNAME_S:   Linux I UNAME_P:   x86_64 I UNAME_M:   x86_64 I CFLAGS:    -I. -Icommo

    2024年02月04日
    浏览(48)
  • linux:docker /bin/bash作用

    参考:         docker run -it centos /bin/bash 后面的 bin/bash的作用

    2024年02月13日
    浏览(43)
  • docker容器使用/bin/bash命令

    本地运行命令和docker运行命令的解释器不同,在本地已经是 /bin/bash ,但是docker中仍然是 /bin/sh ,需要修改docker中 /bin/sh 为 /bin/bash 1、首先看docker容器的详细信息。输入“ docker container ls |grep xxxx ”,看其中的命令部分,如果是“ /bin/sh ”说明使用的不一定是 bash ,可能是da

    2024年02月14日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包