.bashrcは上書きされますが、まだソースされています—どのように回復できますか?


19

通常、エイリアスを作成したいコマンドを見つけたら、次のように.bashrcにエコーします。

[up button pressed to last command, then line edited so that it reads]
$echo "command-i-just-did" >> ~/.bashrc

これを行うより良い方法があるかもしれません。しかし、とにかく、たった今、単一のシェブロンを使用して.rcファイル全体を上書きしました。ただし、.bashrcはまだ最新であるため、古いエイリアスを受け入れています(もちろん、今のところ)。それを回復する方法はありますか?


6
echo "set -o noclobber" > ~/.bashrc(2番目の山かっこを追加することを忘れないでください)
hhaamu


1
将来のために:これが問題にならないようにファイルをバックアップしてください。また、これらのクイックアドオン用に個別のファイルを作成し、.bashrcのような場所に配置することを検討することもできます。基本的なセーフティネットを提供し、必要に応じて簡単にオン/オフを切り替えることができます。
ジョー

2
現在の設定を保存することはできますが、ホスト、ユーザーなどのローカル変数に依存.bashrcするロジックが含まれている場合は、おそらく回復不能です。本当の答えは、最新のバックアップから復元することです。最近のバックアップの権利はありますか?
jw013

回答:


22
  • alias パラメータなしでは、現在定義されているエイリアスの定義が出力されます。
  • declare -f 現在定義されている関数の定義を出力します。
  • export -p 現在定義されている変数の定義を出力します。

これらのコマンドはすべて、定義を再利用する準備ができているので、出力を直接newにリダイレクトできます~/.bashrc

すべてのリストには、たとえば/etc/profileやなど、他の場所で定義された多くの要素が含まれます/etc/bash_completion。そのため、リストを手動でクリーンアップする必要があります。


3
また.bashrc、システムのデフォルトから開始することをお勧めします。Debian /etc/skelでは、にあります。または、可能であれば、新しいユーザーを作成して、新しいユーザーを取得できます.bashrc
enzotib

1
setそしてdeclare(引数なしで)これらすべてを一度に表示します。
rozcietrzewiacz

@enzotib、素晴らしいアイデア。デフォルトの.bashrcはどこにあるのだろうかと思いました...
ixtmixilix

1

typeset -f > .bashrc あなたが持っていたすべてがエイリアスだったならば、それをするべきです。


functionsコマンドは、私のために存在していません4.2.10(2)-release。あなたはおそらく意味しdeclare -fます。
クリスダウン

実際には、「タイプセット-f」を意味しました
ポールトムブリン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.