73713


Tera
TermでLinuxサーバにssh接続しています。セッションを切り替えたりexitしたりしなければ、自分のセッションでの履歴を↑ボタンで見られるのですが、別セッションになると元のセッションの履歴が見られなくなってしまいます。これを解消する方法はないでしょうか。

**行いたいこと**

セッション1

[code]

    $python3 myfunc_1_1.py # 12:00に実行
    $python3 myfunc_1_2.py # 13:00に実行
    
[/code]

セッション2

[code]

    $python3 myfunc_2_1.py # 12:30に実行
    $python3 myfunc_2_2.py # 13:30に実行
    
[/code]

とコマンドを実行した後に、例えばこの後新たなセッション3を立ち上げた時↑をクリックすると  
セッション3

[code]

    $python3 myfunc_2_2.py # 13:30に実行
    $python3 myfunc_1_2.py # 13:00に実行
    $python3 myfunc_2_1.py # 12:30に実行
    $python3 myfunc_1_1.py # 12:00に実行
    
[/code]

の順にコマンド履歴が表示されてほしいです。今だと、確かに履歴は表示されるのですが、その履歴はセッション1から来たものなのかセッション2から来たものなのかなどの法則性が良くわからない状態になっています。

何か良い方法をご存じの方、教えていただけないでしょうか。もしくはTera
Term以外の「〇〇のターミナルアプリならできる」という情報でも構いません。よろしくお願いします。


CC BY-SA 4.0
2021-01-31T05:36:41.190
73711
2021-02-20T06:10:41.583
2021-02-20T06:10:41.583
3060
30785
question
linux
別セッションからも同じコマンド履歴を見たい


とりあえず以下は、サーバ側で動いているシェルがbashで、特に設定が変更されていない状態と仮定します。

  1. bash起動中のコマンド履歴はbash自身に保持されていますが、bashが終了するタイミングでホームディレクトリの「.bash_history」というファイルに保存されます。

  2. そしてbashが起動する際には、「.bash_history」からコマンド履歴を読み込んでそれがそのbashのコマンド履歴の初期状態となります。

以上2点の「.bash_history」ファイルを介したやり方によって、時間をおいて(同時起動せず)1回ずつ実行されるbashのコマンド履歴は継承されます。  
このデフォルトの設定の場合、bashを同時に起動した場合に起動している最中は他方のコマンド履歴を持ってくるようなことはその仕組み上行われることはありません。

起動しているbash同士でコマンドヒストリを同期させるには例えば以下のページで紹介されているようなやり方があるようです。

[コマンド履歴を複数の端末で「共有化」する方法【Bash・history】 |
LFI](https://linuxfan.info/history_share)

[code]

    export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"
    shopt -u histappend
    
[/code]


CC BY-SA 4.0
2021-01-31T06:42:52.647
73713
2021-01-31T06:42:52.647
30745
73711
answer


すでに回答が付いていますが、情報があった方がいいと思うので別解を。

zshには同時に起動されている複数のシェルの間で履歴を共有する機能が有ります。  
この機能を有効化するには以下のコマンドを`.zshrc`に追加します。

[code]

    setopt SHARE_HISTORY
    
[/code]

注意点としては、履歴の同期を行うのはプロンプトを新たに表示した時となる事です。  
プロンプトを表示した後に他のシェルが実行した履歴は参照出来ません。  
他のシェルによる新たな履歴を参照したい場合は、何もコマンドを入力せずにReturnキーを押すなどして、新たにプロンプトを表示させる必要があります。  
この辺りの制約はbashでPROMPT_COMMANDを利用した履歴共有と同じですね。


CC BY-SA 4.0
2021-01-31T12:53:17.390
73719
2021-01-31T12:53:17.390
12203
73711
answer