码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 10.docker exec -it /bin/bash报错解决、sh与bash区别


    报错

    进入容器时,报如下错误

    1. dockeruser@dell-PowerEdge-R740:~$ docker exec -it daf2 /bin/bash
    2. 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脚本:

    1. #!/bin/sh
    2. source err
    3. echo "sh hello"

    hello2.sh脚本:

    1. #!/bin/bash
    2. source err
    3. echo "bash hello2"

    输出结果:

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

  • 相关阅读:
    举个栗子~Tableau 技巧(244):用和弦图(Chord diagram)呈现数据关系
    主流的第三方直播SDK对比(腾讯云、即构、阿里云、声网、网易云信、网宿)
    基于51单片机的孵化环境温湿度监控系统设计
    【数据结构(三)】单向环形链表和约瑟夫问题(3)
    Vue2.js给对象动态添加响应式属性
    go 内存泄露
    docker数据卷详细讲解及数据卷常用命令
    树/二叉树/森林之间的相互转换 与遍历
    招投标系统简介 招投标系统源码 java招投标系统 招投标系统功能设计
    画布的使用方式
  • 原文地址:https://blog.csdn.net/qq_37992410/article/details/136228694
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号