在我的debian maschine上,我误删了/ bin / bash。 有没有办法让它恢复,而不重新安装机器?
如果有帮助。 我仍然login。猜一旦我出去,我不能login,因为它是我的login壳。
ln -s /bin/sh /bin/bash apt-get install --reinstall bash
新的Linux系统通常不会在没有运行的bash的情况下启动。 如果您丢失了bash,并且您尝试重新启动,则可能(暂时)阻止您的系统。
如果你仍然有一个开放的会议,跳过下一段关于从一个现场光盘启动,并直接转到下一段。 否则请尝试:
如果你失去了bash,并且没有你的用户帐户或者root用户login,你的系统甚至不能启动,那么你可以尝试用live cd启动系统,挂载你的系统所在的硬盘。系统,说'cd / mount / sda1 / bin',将bash移动到bash.bak'mv bash bash.bak',然后从一些正在工作的shell进行连接,比如'ln ksh bash'退出并尝试重新启动。 它可能会或可能不会工作,它为我slackware和debian。 一旦系统启动,使用chsh命令更改用户和root的loginshell,然后删除从ksh到bash的链接。
之后,这些build议中的一些可能会起作用。
sh本身就是古老的,在一些linux系统中,/ bin / sh其实是为了遗留支持而存在的,只是一个到/ bin / bash的链接,所以把你的loginshell更改为/ bin / sh可能不起作用。
如果你还有根terminal,你的状态良好。 使用chsh命令将您的loginshell更改为您仍然拥有的loginshell。 我用这个/ bin / ksh。 注意你的系统可能不会以这种方式启动,但至less你现在可以做救援的变化。
如果你只有一个用户shell,使用chsh将你的loginshell更改为你的系统上正在运行的那个(ksh),然后尝试运行'sudo chsh'。
如果您的sudo正在运行,您将有机会更改root用户的loginshell。 如果没有,转到这篇文章的开头,按照说明做一个从ksh到bash的工作shell的软链接,并从那里拿走。
一旦完成,您可以以root用户身份login,并尝试使用通常的软件包pipe理器来删除破损的bash安装并安装或重新安装工作版本,或者从源代码编译新的安装,或者在slackware的情况下,将bash软件包放入/并提取它…瞧,瞬间bash。 theres可能的方式从顶级目录提取到其他发行版上的工作系统,但我还没有尝试过。
注意,一些在系统上得到一个工作bash的安装程序最终会把一个可用的bash可执行文件放在/ bin中,但它不是命名为bash,在这种情况下,你必须把它连接到'bash'。 最终通过删除安装周期的正确组合,你可以做到这一点,但我花了几个试图让它自己做。 大多数情况下,我得到/bin/bash4.new作为可执行文件,我必须链接到/ bin / bash才能用通常的包pipe理器工具修复它。
如果你在没有bash的系统上运行ksh shell的软件包pipe理工具,你甚至可能会以root的身份得到一个命令not found错误,除非你特别用'ksh apt-get'或'ksh installpkg'来调用它们,甚至然后根据你正在尝试安装的软件包….在这种情况下对我来说这是bash,安装脚本失败的一些版本,因为它需要bash运行安装脚本….去图。 本身的依赖。 这可以通过进入和重写安装脚本来解决,但真正想要打扰的是,更容易做其他事情。
您可能需要运行几轮安装卸载安装干净地得到它。
交替…在slackware我能够把松散包在/然后解压缩,并得到一个工作bash可执行文件在/ bin
如果这些不工作,你可以尝试删除/ bin中的任何死亡的bash可执行文件,并抓取bash源文件,并从源代码编译/安装它。
或者您可能没有想到它,但许多发行版有一个可从cli调用的重新configuration实用程序,它可以让您修改已安装的系统,或者您可以通过启动发行版附带的cd / usb / media安装程序你从安装。 这也可能有办法进入和修改你的系统作为一个选项。 我从那里重新安装bash,或者调用它从cli提供的重新configuration程序。 这工作在debian和slackware。
最后你可以启动与你的系统相匹配的live cd,前提是你仍然拥有相同的内核,然后chroot到你的系统,然后使用普通的软件包pipe理工具重新安装。 …这我还没有testing过。
不pipe怎样,你可能最终都希望新的bash是一个被你的系统上的任何包pipe理器所识别的包,否则编译新的程序可能会抱怨他们找不到bash(可能不是,但它是一个潜在的问题,程式)
一个罗嗦的答案,但它有一个可怕的事情有一个无法启动的系统,有几种方法来解决这个问题。
如果您仍然login,请发出以下命令:
sudo apt-get install --reinstall bash