wha*_*489 4 uninstall command-line sh
这可能听起来很愚蠢,但我想卸载 sh (出于研究目的)并将其替换为我自己的 shell。这实际上可能吗?
许多脚本和程序似乎都对其进行了硬编码,因此我对其可行性表示怀疑。
\n\n\n\xe2\x9a\xa0\xef\xb8\x8f警告!请在运行任何命令之前阅读!\xe2\x9a\xa0\xef\xb8\x8f
\n\n此答案仅供研究和进一步了解 Ubuntu Linux 之用。运行此答案中的任何命令很可能会完全破坏您的系统。确保您位于虚拟机或备份中。如果你破坏了你的系统,我不承担任何责任。
\n
该命令sh由 提供dash,通过符号链接的方式:
$ ll /bin/sh\nlrwxrwxrwx 1 root root 4 Jun 1 08:33 /bin/sh -> dash*\n\n$ which sh\n/bin/sh\n\n$ dpkg -S /bin/dash\ndash: /bin/dash\n\n$ dpkg -S /bin/sh\ndiversion by dash from: /bin/sh\ndiversion by dash to: /bin/sh.distrib\ndash: /bin/sh\nRun Code Online (Sandbox Code Playgroud)\n\n要删除它,请运行以下命令:
\n\nsudo apt remove dash\nRun Code Online (Sandbox Code Playgroud)\n\nAPT 会返回以下错误消息:
\n\nYou are about to do something potentially harmful.\nTo continue type in the phrase \'Yes, do as I say!\'\nRun Code Online (Sandbox Code Playgroud)\n\n如果您确实愿意破坏您的系统,请输入该内容并按Return。
\n\n然后 Ubuntu 将卸载bash、lightdm和ubuntu-desktop元包(以及依赖这三个包的所有包),因为它们都依赖于dash. bash除非您当前的 shell 完美运行,否则在您杀死或的最后一个实例后,您的系统将无法使用dash。
如果您确实执行此命令,则恢复正确文件的唯一方法是启动 Live CD 并通过chrooted 恢复会话重新安装软件包。
如果您真的很幸运,只要您仍然打开 root shell,您仍然可以通过重新安装软件包来实时修复系统。系统已经从之前最糟糕的情况中恢复过来,但运气确实需要站在你这一边。
\n\n相反,我建议您重新创建/bin/sh符号链接以指向您的 shell。dash在这种情况下,如果确实出现问题,您可以恢复到原来的状态。通过运行以下命令来执行此操作:
sudo -s\ncd /bin\nrm sh\nln -s /path/to/your/shell sh\nchmod 777 sh\nRun Code Online (Sandbox Code Playgroud)\n\n通过重复这些步骤来恢复dash,但指定dash而不是您自己的 shell。或者只是跑sudo apt install --reinstall dash。您可能需要指定一个自定义init来执行此操作。