Команды терминала не работают

Команды терминала не работают

Я переместил все файлы, начинающиеся с lib, из /../ в какую-то папку, например, mv /../lib* /to/some/folder

после чего я не могу вернуть его обратно. Это происходит так -bash: /bin/mv: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

Даже для lsэтого приходит как-bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory

решение1

Восстановление busyboxв вашем случае сработало так, как вы busyboxустановили.

busyboxявляется статически скомпонованным двоичным файлом, и это помогло в вашем случае, но нет необходимости использовать статически скомпонованные двоичные файлы для исправления такого рода дефектов.

Вы также можете сделать это:

LD_LIBRARY_PATH=/some/path/where/the/libs/are mv ....

Если вы переместили динамический компоновщик времени выполнения, вам также нужно вручную вызвать компоновщик времени выполнения. Чтобы понять, как это работает, вызовите:

man ld.so.1

или на Linux

man ld.so

Обычно это приводит к появлению командной строки следующего вида:

LD_LIBRARY_PATH=/path/to/libs /path/to/libs/ld.so.1  mv ....

В Linux замените /path/to/libs/ld.so.1на /path/to/libs/ld-linux-x86-64.so.2то, что фактически используется в вашей системе.

В общем случае вам необходимо знать, является ли двоичный файл, который вы хотите вызвать, 32- или 64-битным, и вызывать правильный динамический компоновщик времени выполнения.

Кстати: этот метод задокументирован для Solaris с 2004 года, и с того года в Solaris больше нет статически скомпонованных двоичных файлов.

Связанный контент