web-dev-qa-db-ja.com

shをアンインストールすることはできますか?

これはばかげて聞こえるかもしれませんが、shをアンインストールして(研究目的)、自分のシェルに置き換えたいと思います。これは実際に可能ですか?

多くのスクリプトやプログラムにはハードコードが組み込まれているようですので、その実行可能性については疑問です。

2
whatever489

⚠️警告!コマンドを実行する前に読んでください!⚠️

この回答は、onlyであり、Ubuntu Linuxの研究およびさらなる知識のために提供されています。この回答でコマンドを実行すると、システムが完全に破壊される可能性があります。あなたがVMまたはバックアップにいることを確認してください。システムを壊したとしても、私は責任を負いません。

コマンドshは、シンボリックリンク経由でdashによって提供されます。

$ ll /bin/sh
lrwxrwxrwx 1 root root 4 Jun  1 08:33 /bin/sh -> dash*

$ which sh
/bin/sh

$ dpkg -S /bin/dash
dash: /bin/dash

$ dpkg -S /bin/sh
diversion by dash from: /bin/sh
diversion by dash to: /bin/sh.distrib
dash: /bin/sh

削除するには、次のコマンドを実行します。

Sudo apt remove dash

APTは、次のエラーメッセージであなたを蹴り返します。

You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'

システムを本当に破壊したい場合は、それを入力して押します Return

その後、Ubuntuはbashlightdm、およびubuntu-desktopメタパッケージ(およびこれら3つに依存するすべてのパッケージ)をアンインストールします。これらはすべてdashに依存しているためです。現在のシェルが完全に機能しない限り、bashまたはdashの最後のインスタンスを強制終了すると、システムは使用できなくなります。

実際にこのコマンドを実行する場合、適切なファイルを復元する唯一の方法は、Live CDから起動し、chrootedリカバリセッションでパッケージを再インストールすることです。

本当に運が良ければ、ルートシェルが開いている限り、パッケージを再インストールすることでシステムをライブで修復できる可能性があります。 システムはより悪い状態から回復しました 以前、しかし運は本当にあなたの側にある必要があります。


代わりに、/bin/shシンボリックリンクを再作成して、シェルを指すようにすることをお勧めします。その場合、何かが本当に本当にうまくいかない場合は、dashに戻すことができます。これを行うには、次のコマンドを実行します。

Sudo -s
cd /bin
rm sh
ln -s /path/to/your/Shell sh
chmod 777 sh

これらの手順を繰り返してdashに復元しますが、独自のシェルの代わりにdashを指定します。または、Sudo apt install --reinstall dashを実行します。これを行うには、 カスタムinitを指定 が必要になる場合があります。

4
Kaz Wolfe

SHと一緒に独自のシェルをインストールします。 SHをアンインストールすることは非常に悪い考えです。SHは多くのプログラムとスクリプトに依存しているためです。

0
jadenPete