我正在AIX 6.1上工作,无意中将/usr/lib/libc.a更名为usr/lib/libc.a_就像我改名一样,我意识到了自己愚蠢的错误。 几乎所有的命令mv , cp , ftp等( cd除外)都停止工作。
我该如何重新命名libc.a 没有它,系统几乎没有function:(
大部分的二进制文件依赖/使用libc库。 要弄清楚,你可以使用ldd /path/to/binary看起来你需要启动另一个映像或live CD。 然后,您可以挂载相关的分区( /usr如果分隔或/ )并重命名该文件。
只是张贴这个以防其他人search这个问题。
至less从AIX 5.3开始,IBM为此问题提供了恢复shell recsh 。
检查IBM文档 。
使用示例: recsh; cp -p libc.a.new /usr/lib/libc.a; exit recsh; cp -p libc.a.new /usr/lib/libc.a; exit
我猜这也是没有问题的?
ln -s usr/lib/libc.a_ usr/lib/libc.a
还是Perl?
perl -e 'symlink("usr/lib/libc.a_","usr/lib/libc.a");'
要么
perl -MFile::Copy -e 'copy("usr/lib/libc.a_","usr/lib/libc.a");'
尝试while read -rx; do echo $x >> libc.a; done < libc.a_ while read -rx; do echo $x >> libc.a; done < libc.a_ while read -rx; do echo $x >> libc.a; done < libc.a_ (这里假设一个Bourne风格的shell)。
如果失败了,你足够幸运, ed或sed是静态链接的尝试:
sed libc.a_ > libc.a
要么
ed libc.a_ w libc.a q
也是dd if=libc.a_ of=libc.a
从救援盘启动,挂载文件系统,重命名。