web-dev-qa-db-ja.com

開いている[ターミナル]タブから.bash_profileを復元できますか?

私は実際にMacbookProを使用していて、Windows以外のOSにはまったく慣れていません」(残念ながら知っています!)。bashプロファイルを追加する代わりに上書きするという間違いを犯しました...

私が持っているのはターミナルで開いているタブのいくつかであり、これから私の.bash_profileを回復する方法があるかもしれないことを望んでいます(または実際には何らかの方法で)。

5
Fifer Sheep

ターミナルがまだ開いている場合は、envと入力します。すべての環境変数が表示されます。新規インストールの場合、または変更を加えたことがない場合、最も重要な変数はPATH(これは常に存在します)とLD_LIBRARY_PATH(存在しない可能性があります。私はosxに慣れていません)です。

例えば:

$ env
...
PATH=/usr/bin:/bin:/home/user/bin:/sbin
...

そのファイルで.bashrcを調達することも一般的なことです。

次に、.bash_profileを編集して、次のような行を追加できます。

# Source your .bashrc
if [ -f ~/.bashrc ]; then
  source ~/.bashrc
fi

# Export the interesting env variables you
#   displayed from env command previously
export PATH=/usr/bin:/bin:/home/user/bin:/sbin

これは実際の「バックアップ」ではないため、実際のソリューションではありませんが、端末が開いている限り、環境変数を知ることができ、.bash_profileの主な目的はそれらの変数を設定することです。

また、いくつかのエイリアスがある場合があります。開いているターミナルでaliasと入力して、定義されているすべてのエイリアスを表示します。出力をそのままコピーして.bash_profileに貼り付けることができます。 (明らかに、これらのエイリアスが.bashrcで使用できる場合、以前に.bash_profileをソースとして使用しているため、.bashrcでそれらを定義する必要はありません。)

4
apaul

これはちょうど私に起こり、私は次のように回復しました...

定義された変数と関数:

$ declare > definitions.bash.txt

エイリアス:

$ alias > aliases.bash.txt
3
AnthumChris

RAMにこのファイルのコンテンツが保存されている場所があるかどうかを暗黙的に尋ねているようです。答えは「いいえ」です。ファイルはシェルの起動時に単に読み取られて実行されますUnixシェルは、起動スクリプトに継続的にアクセスする必要はありません。

apaulの回答 に従って、ファイルのコンテンツの一部は引き続き取得できます。

解放されたRAM)にファイル自体のフラグメントがまだ再割り当てされていないか、OSに戻されていない可能性はわずかですが、時間をかけて構築する価値はないでしょう。 RAMの内容をディスクファイルにダンプし、それを調べてファイルの内容を見つけようとするプログラム。

あなたが与えられたレッスンを受けて、それらから学びましょう:

  1. 押す前によく考える Enterrmコマンドに注意することを学んだことと同じように、>の代わりに>>を使用するコマンドについて。

  2. セットアップ Time Machine 、最も早く。

    昔々、最近のバックアップがないことは悲しいがあまりにも一般的な話でした。今では許されません。 Appleはなくなり、合理的に質問できる限り簡単になりました。

2
Warren Young

愚かなスクリプトが私のbashrcにそれをしたので、次のコマンドを実行してファイルのほとんどを取得しました。

# Retrieve functions definitions
$ declare > .bashrc.new
# Retrieve aliases
$ alias >> .bashrc.new
# Retrieve env
$ echo "export $(env | grep ^PATH=)" >> .bashrc.new

ここでは、ほとんどの.bashrcがほぼ再構築されています。ここで、ベストプラクティスに一致するように、わずかな調整を行う必要があります。 ;)

カスタム関数の定義を見つけるためのクールなコマンド:type my_function >> .bashrc.new

また、envの戻り値を確認して、新しく作成したファイルに重要だと思うものを含めてください。

0
SkyzohKey