![~/.bash.rc から変数を取得し、ログアウト後も保持する](https://rvso.com/image/1288691/~%2F.bash.rc%20%E3%81%8B%E3%82%89%E5%A4%89%E6%95%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%80%81%E3%83%AD%E3%82%B0%E3%82%A2%E3%82%A6%E3%83%88%E5%BE%8C%E3%82%82%E4%BF%9D%E6%8C%81%E3%81%99%E3%82%8B.png)
私は、CollabNet の SVN クライアントと GNOME Keyring Daemon (別名 GKD) を使用して、非対話型で安全な cron ベースの SVN チェックアウトを可能にするために、一連の bash スクリプトを書いてきました。スクリプトの 1 つは、GKD を起動し、その出力 (基本的にはいくつかの環境変数) を収集し、スクリプトが実行されるユーザーのシェルでそれらの変数をエクスポートするように設計されています。すべて、~/.bashrc で bash スクリプトをソースすることにより、ユーザーがログインすると実行されます。
問題は、スクリプトがサブシェル内で実行され、完了すると終了し、環境変数が完全に設定解除されるため、それらの環境変数がエクスポートされないことです。
さて、問題は、これらの変数を永続的に設定し、ログイン/ログアウト セッション間でもエクスポートされ、変更されないままにするにはどうすればよいかということです。
答え1
ホーム ディレクトリ (または他の場所) にある、. で始まる別のシェル スクリプトに変数をエコーするだけです (デフォルトの ls ビューでは表示されなくなります)。起動時にこのシェル スクリプトが実行されるように .bashrc を変更します。
例:
foo='What the heck'; echo "foo='$foo'" > ~/.startup.sh
次にこれを ~/.bashrc に記述すれば完了です:
. ~/.startup.sh