ターミナルでタブ/ウィンドウごとに個別の履歴を保持するにはどうすればよいですか?


13

Macを再起動すると、各タブのバッファーが適切に終了し、保存されます。コンピューターの起動時に再び表示されるためです。ただし、コマンド履歴はウィンドウ/タブごとに適切にバッファリングされません。それらはすべて同じバッファーです。

私はそれがbashが~/.bash_historyすべての端末に同じを使用しているためだと仮定していますが、これ改善するのを避ける方法はありますか?bash、または多分Terminalを作成するには、それらを別々に保存しますか?


この記事 @ Server Faultをご覧ください。これを行う方法を説明しています。
突然変異体

回答:


7

あなたは次のようなことをすることができます.bashrc

MYTTY=`tty`
HISTFILE=$HOME/.bash_history_`basename $MYTTY`

これにより、ホームディレクトリにのような個別の履歴ファイルが作成されます.bash_history_ttys002。新しいターミナルウィンドウを作成すると、tty名に対応する履歴ファイルが使用されます。これは通常、ターミナルウィンドウを作成した順序によって簡単に決定されます。


まことにありがとうございます!これを解決済みとしてマークします。OSXがどのように端末をロードするかに依存しますが、これが最も近いと感じています。
ロバートシェルド

これもタブごとに可能ですか?
ジョシュアミューハイム14年

各タブは個別のttyログインであるため、動作するはずです。
セスノーブル14年

ターミナルは、このタイプの動作を明示的にサポートしています。新しいターミナルを作成すると、ターミナルに一意のIDを割り当て、TERM_SESSION_ID環境変数を介してターミナルセッションに通信します。Resume用に端末を復元すると、同じセッションIDも復元されるため、プログラムはこれを使用して、復元された端末に任意の状態を関連付けることができます。ttyの代わりにこれをファイル名の一部として使用します。
クリスページ

@ChrisPageこれに関する問題は、ウィンドウ/タブを起動するたびにセッションが異なることです。そのため、個別の履歴が作成され、セッション間でリンクされません。
ルネウーラー

5

追加してこれを実装しました

export HISTFILE="$HOME/.bash_history_$TERM_SESSION_ID"
if [ ! -e $HISTFILE ]; then cp "$HOME/.bash_history" "$HISTFILE"; fi

私の~/.bash_profileファイルに。ターミナルを閉じて再度開くと、各タブの個別のコマンド履歴が復元されます。また、新しいタブを作成すると、デフォルトの履歴は.bash_history

またTerminal、終了してから再起動するまで開いたタブを保持するアプリを作成するに"close windows when quitting app" (on Yosemite)は、でオプションが無効になっていることを確認する必要がありますSystem Preferences -> General


0

ターミナルインスタンスごとにカスタム$ HISTFILEを設定できます。


各ターミナルタブ/ウィンドウに対してこれを自動的に行う方法はありますか?また$HISTFILE、コンピューターの起動時に同じコンピューターが使用されていることを確認しますか?
ロバートシェルド

1
はい、これを行うことは可能ですが、その後、どのように再度アクセスしますか?以前の履歴ファイルを取得するには、手動でファイルを調整する必要があります。
EmmEff

@EmmEffターミナルは、このタイプの動作を明示的にサポートしています。新しいターミナルを作成すると、ターミナルに一意のIDを割り当て、TERM_SESSION_ID環境変数を介してターミナルセッションに通信します。Resume用に端末を復元すると、同じセッションIDも復元されるため、プログラムはこれを使用して、復元された端末に任意の状態を関連付けることができます。
クリスページ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.