На моем debian maschine я случайно удалил / bin / bash. Есть ли способ вернуть его без переустановки машины?
Если это поможет. Я все еще в системе. Думаю, как только я выйду, я не смогу войти, так как это моя оболочка входа.
ln -s /bin/sh /bin/bash
apt-get install --reinstall bash
Новые системы Linux обычно не загружаются без работающего bash. Если вы потеряли bash и попытаетесь перезагрузиться, вы можете (временно) заблокировать доступ к вашей системе.
если у вас все еще есть открытый сеанс, пропустите следующий абзац о загрузке с живого компакт-диска и переходите прямо к следующему абзацу. в противном случае попробуйте:
Если вы потеряли bash, и ни одна из ваших учетных записей или root не может войти в систему, а ваша система даже не загружается, вы можете попробовать загрузиться в систему с живого компакт-диска, смонтировать жесткий диск, на котором ваша система находится, переходя к / bin на этом система, скажите 'cd / mount / sda1 / bin', переместите bash в bash.bak 'mv bash bash.bak', затем сделайте ссылку из некоторой оболочки, которая работает с bash, например, 'ln ksh bash' выходит и пытается перезагрузиться . он может работать, а может и не работать, он работает для меня в Slackware и Debian. как только вы загрузите систему, измените оболочку входа для пользователя и root с помощью команды chsh, затем удалите ссылку с ksh на bash.
после этого некоторые из этих предложений могут сработать.
sh сам по себе является древним, и в некоторых системах Linux / bin / sh на самом деле существует для поддержки устаревших версий и является просто ссылкой на / bin / bash, поэтому изменение вашей оболочки входа в / bin / sh может не сработать.
Если у вас все еще есть корневой терминал, значит, вы в хорошей форме. Используйте команду chsh, чтобы изменить оболочку входа в систему на ту, которая у вас еще есть. Я использовал для этого / bin / ksh. обратите внимание, что ваша система, вероятно, не будет загружаться таким образом, но, по крайней мере, теперь вы можете внести изменения для восстановления.
Если у вас есть только пользовательская оболочка, используйте chsh, чтобы изменить оболочку входа в систему на что-то, что все еще работает в вашей системе (ksh), затем попробуйте запустить sudo chsh.
Если ваш sudo работает, вам будет предоставлена возможность изменить оболочку входа для root. если это не так, перейдите к началу этого поста и следуйте инструкциям, чтобы создать мягкую ссылку из рабочей оболочки, такой как ksh, на bash и взять ее оттуда.
Как только это будет сделано, вы можете войти в систему как root и попытаться использовать свои обычные менеджеры пакетов, чтобы удалить сломанную установку bash и установить или переустановить рабочую версию или скомпилировать новую установку из исходного кода, или, в случае Slackware, поместите пакет bash в / и извлеките его ... вуаля, мгновенный удар. Вероятно, есть способы извлечь bash из каталогов верхнего уровня в рабочие системы других дистрибутивов, но я не пробовал.
Обратите внимание: некоторые процедуры установки для получения рабочего bash в системе заканчиваются тем, что рабочий исполняемый файл bash помещается в / bin, но он не называется bash, и в этом случае вам придется связать его с 'bash'. в конечном итоге с правильной комбинацией циклов удаления и установки вы заставите его сделать это, но мне потребовалось несколько раундов на большинство попыток, чтобы заставить его сделать это самостоятельно. Чаще всего я получал /bin/bash4.new в качестве исполняемого файла, который мне пришлось связать с / bin / bash, прежде чем я смог исправить его с помощью обычных инструментов диспетчера пакетов.
Если вы запускаете инструменты управления пакетами из оболочки ksh в системе без bash, вы можете получить сообщение об ошибке `` Команда не найдена '' даже с правами root, если вы не вызываете их специально с помощью чего-то вроде 'ksh apt-get' или 'ksh installpkg', и даже затем, в зависимости от пакета, который вы пытаетесь установить .... в этом случае для меня это был bash, сценарий установки не работает для некоторых версий, потому что для запуска сценария установки требуется bash ... разберитесь. зависимость от самого себя. это можно исправить, зайдя и переписав сценарии установки, но кто действительно хочет заморачиваться, проще делать другие вещи.
вам может потребоваться выполнить несколько раундов установки, удаления, установки, чтобы все было чисто.
поочередно ... в Slackware я смог поместить пакет Slack в / затем извлечь его и получить рабочий исполняемый файл bash в / bin
если они не работают, вы можете попробовать удалить все мертвые исполняемые файлы bash в / bin, получить исходный код bash и скомпилировать / установить его из исходного кода.
с другой стороны, вы, вероятно, не подумали об этом, но во многих дистрибутивах есть утилита перенастройки, которую вы можете вызвать из cli, которая позволит вам изменить уже установленную систему, или вы можете сделать это, загрузив установочный cd / usb / media, который поставляется с вашим дистрибутивом который вы установили из. у этого также, вероятно, есть способ войти и изменить вашу систему в качестве опции. ive переустановил bash оттуда или вызвав любую программу перенастройки, которую он предоставляет из cli. это работает в debian и Slackware.
наконец, вы можете загрузить live cd, который соответствует вашей системе, при условии, что у вас все еще есть то же ядро, и подключиться к вашей системе и переустановить ее, используя обычные инструменты управления пакетами оттуда. ... это я не тестировал.
так или иначе, вы, вероятно, в конечном итоге захотите, чтобы новый bash был пакетом, который распознается любым менеджером пакетов, который у вас есть в вашей системе, иначе компиляция новых программ может жаловаться на то, что они не могут найти bash (вероятно, нет, но это потенциальная проблема для плохо написанного программ)
многословный ответ, но иметь незагружаемую систему страшно, и есть несколько способов исправить это.
если вы все еще вошли в систему, выполните следующую команду:
sudo apt-get install --reinstall bash