63980


# 概要

Linux環境でコマンド入力しているときに、変数をファイルに保存してあとでまた反映できるようにしたい

# 内容

[code]

    hello="hello world"
    # ファイルに保存する処理を何かしらする
    # ここで何かしらセッションとか切れて変数がリセットされる
    # ファイルに保存した変数を取り込む
    echo $hello
    # hello worldが表示される
    
[/code]

保存されたファイル

[code]

    hello=hello world
    
[/code]

上記のようにシェルでやるわけでなく直コマンド操作しているときに変数とかを一時的に保存とかできないのかなと思っているのですが、  
何か簡単にできないでしょうか？  
ついでに、同じ変数名だと上書きするようにしたいです。


CC BY-SA 4.0
2020-03-19T09:12:05.297
63975
2020-03-19T13:14:08.577
36900
question
linux command-line
変数をファイルに保存・反映できるようにしたい


変数が多くないのであれば、まさに`hello="Hello
world."`を実行しておけば、大抵.bash_historyに履歴が残るので、再接続後にカーソル上キーで履歴を辿って再実行するか、`history`コマンドで履歴を確認して、`!<履歴番号>`で、目的は達成できそうですがどうでしょうか？

参考：[覚えておくと案外役に立つbashのhistory機能の使い方いろいろ](https://orebibou.com/2016/06/%E8%A6%9A%E3%81%88%E3%81%A6%E3%81%8A%E3%81%8F%E3%81%A8%E6%A1%88%E5%A4%96%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A4bash%E3%81%AEhistory%E6%A9%9F%E8%83%BD%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9%E3%81%84%E3%82%8D/)


CC BY-SA 4.0
2020-03-19T11:00:30.657
63977
2020-03-19T11:00:30.657
7900
63975
answer


**回答**  
`bash`など、`declare`が使える`sh`であれば、比較的簡単に変数をファイルに退避し、復元することができます。環境変数とsh変数も区別されます。

**環境変数の退避**

[code]

    HELLO='Hello, world!'
    declare -p HELLO > hello.env   #変数をファイルに退避
    
[/code]

**環境変数の復元**

[code]

    unset HELLO
    source hello.env   #ファイルから変数を復元
    printf "%s\n" "${HELLO}"
    
[/code]

**復元結果**

[code]

    Hello, world!
    
[/code]


CC BY-SA 4.0
2020-03-19T13:14:08.577
63980
2020-03-19T13:14:08.577
35558
63975
answer