PYTHONSTARTUP
通常Pythonで対話モードを始めるときには
$PYTHONSTARTUP
で指定されるファイルが読み込まれます。
-i <file>
が渡された時は$PYTHONSTARTUP
の代わりに<file>
を読み込みます。
また、-c <command>
が渡された時は<command>
が実行されます。
1 2 |
|
とか言うファイルを~/.pythonstartup.pyとして置いておくと、
$ export PYTHONSTARTUP="~/.pythonstartup.py"
$ python
Python 2.7.9 (default, Dec 19 2014, 06:00:59)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Python Startup!
>>
の様に対話モードの最初にメッセージを出したり出来ます。
PYTHONSTARTUP
を設定せずに
$ python -i ~/.pythonstartup.py
したり
$ python -c 'print "Python Startup!"'
でも同じ様になります。
履歴を残して次回も使えるようにする
このスタートアップ時に履歴を読み込んで終了時に書き出す設定を読み込みます。
1 2 3 4 5 6 7 8 9 10 11 |
|
~/.pyhistに履歴を保存する様にしています。
open(...
としてる部分では履歴ファイルが無いときに次で
失敗しないようにtouch
してる様な意味合いです
1。
その次のreadline.read_history_file
で
ファイルにあるコマンド群を読み込んで履歴に入れます。
atexit.register
で対話モード終了時に実行したい関数を登録出来ます。
引数がある場合は関数名はそのまま()
なしで書いて、
atexit.register
の引数として関数名に続いて書いていきます。
readline.write_history_file
で指定したファイルに履歴を書き出せるので
このコマンドを登録。
これで対話モードで使ったコマンドの履歴が 次回対話モードを立ち上げ直した時に再び使えます。
ちなみに履歴ファイルの中身は単にコマンドの羅列です。 (.bash_history的な時間情報とかは入ってません。)
これを忘れてて、以前上手くいってたのに(以前は多分ファイルを手動で最初に作るなりしてた?) 改めて有効化してみたら履歴が出てこなくてちょっと戸惑ったり。 ↩