bashコマンドを使用せずに〜/ .bashrcを復元する

Aug 21 2020

パスを追加したときにタイプミスがあったと思います。パス~/.bashrcをソースした後は、bashコマンドを使用できなくなりました。

今、私は通常の状態に戻したいのです~/.bashrcが、私が見つけた議論のほとんど(たとえば、間違って編集された.bashrcを修正する方法?)は、bashコマンドを使用する必要があります。cp

clam@cuerei:~# cp /etc/skel/.bashrc ~
cp: /home/cltam/script/lib/libc.so.6: version `GLIBC_2.17' not found (required by cp)

~/.bashrcbashコマンドを使用せずに復元する方法を教えてください。

ありがとうございました。

回答

25 user1686 Aug 21 2020 at 16:35

cpこれはbashコマンドではなく、外部プログラムです。これが失敗する理由です。実際のbashコマンドは、ライブラリやパスの変更による影響を受けません。したがって、逆のことが必要です。つまり、bashコマンドのみを使用します。

次を使用して、ファイルの内容を完全に削除できます。

true > ~/.bashrc

または、他のコンテンツで上書きします。

echo "" > ~/.bashrc

または、ライブシェル内の不適切な変更を一時的に元に戻すこともできます。

unset LD_LIBRARY_PATH LD_PRELOAD LD_AUDIT
export PATH=/bin:/usr/bin
cp /etc/skel/.bashrc ~

または、組み込みのシェルだけを使用して、ファイルの内容を1行ずつコピーすることもできます。

while IFS="" read -r line; do
    echo "$line";
done < /etc/skel/.bashrc > ~/.bashrc
1 NuclearFission Aug 22 2020 at 05:35

現在、システムにログインしていますか?その場合は、別のシェルに切り替えて、ファイルを編集できます

> chsh
> vi ~/.bashrc
1 ThorbjørnRavnAndersen Aug 22 2020 at 18:14

動的にリンクされたプログラムに使用されるライブラリパスを壊しました。これらには、プログラムの実行に必要なすべてのコードが含まれているわけではありませんが、起動時に共有ライブラリから一部をロードします。

一部のプログラムは、この問題を回避するためにコンパイルされます(たとえば、rootとして実行されているプログラムや、ブートプロセスの非常に早い段階で必要なプログラムの場合)。彼らは伝統的に配置されている/sbin/usr/sbin。正確に何があるかは、インストールされているものによって異なります。

私のMacでは、利用可能なエディターがないように見えますが、システムにはある可能性があります。

JohnnyTam Aug 24 2020 at 09:09

@Peter Cordesの提案に従って、編集を元に戻すには、LD_LIBRARY_PATHを設定解除します。

どうもありがとうございました!