bash(Terminal.app)に以前のセッションの履歴を記憶させる方法は?


11

職場のコンピューターでは、新しいターミナルを開いたばかりでも、bashシェルは以前のセッションの履歴を記憶しています。
自宅のコンピューターでは、これは起こりません。
私は両方のマシンで同じOS 10.6.8を使用していますが、に履歴関連の設定はありません.bash_profile
セッション全体の履歴を記憶するために、これを自宅のコンピューターに設定するにはどうすればよいですか?



回答:


11

履歴ファイルを保存する場所と保存する行数をbashに指示する必要があります。

# Set the location of your HISTFILE
echo "export HISTFILE=/Users/<USERNAME>/.bash_history" >> ~/.bash_profile

# Number of lines to keep (1000 in this example)
echo "export HISTFILESIZE=1000" >> ~/.bash_profile

# Set how many commands to keep in the current session history list
echo "export HISTSIZE=80" >> ~/.bash_profile

# Ignore commands that start with a space
echo "export HISTIGNORE=\"&:[ ]*:exit\"" >> ~/.bash_profile

3
それはデフォルトではすべて不要です。デフォルトのbash構成(少なくともMac OS X)では、コマンド履歴が有効になります。
クリスページ

キーワード、/ should /。彼が履歴を記録していない場合、これはbashに履歴をinitに保持するように強制します。
アーロンレイク

2
単なるべきではなく、意志何かが、ちょうどこれらの変数の中にいくつかの値をスラミングは単に実際の問題を超える抄紙された場合には、デフォルトの履歴行動を抑制するために行われていない限り。この回答が問題を解決する場合、他の何かが本当に台無しになり、他の問題を回避するために修正する必要があります。
クリスページ

これらの設定をセットアップできますが、端末の履歴を「有効にする」だけの場合は、より簡単なソリューション/回答が見つかりました。それはちょうど私のためにうまく働いたapple.stackexchange.com/a/220667/243988(私はMacOSのハイシエラを使用しています)
jpruizs

4

雇用主がMacを2台しか持っておらず、どちらも机の上に座ってないのに、同様の問題があることを発見しました。許容できないが、別の時間の戦い。

とにかく、自宅では、Mac Mini(MacBook Proから移行)は、設定.bashrcやを行った後でも連携しませんでした.profile。それから、私の~/.bash_historyファイルが不思議なことにrootによって所有されていることを発見しました。これをしなければなりませんでした:

sudo -iu root
cd ~(myusername)
chown (myusername) .bash_history

(はい、少ないコマンドでできることはわかっています。習慣。)

その後、ターミナルを終了し、新しいターミナルを起動しました。すごい!以前に失われたあらゆる種類の歴史が急いで戻ってきました。なんて素敵だ。

これを読んでいる人は誰でも、この苦境に偶然身を置いています:0.2%。他の何かを熱心に「修正」するとき、私はこれをいじくり回したと確信しています。


4

私はこの問題を抱えていましたが、私にとってうまくいったの.bash_sessions_disableは、ユーザーフォルダー(~/)に呼び出されるファイルを作成することでした。

基本的に、OS X .bash_sessionsは各セッションのフォルダーに履歴ファイルを作成します(私の場合、各タブに1つ)。そして、これらのセッションを適切に閉じたとしても、OS Xはに履歴をリプレイしません.bash_history

作成すると、.bash_sessions_disableこの動作が無効になります。

touch ~/.bash_sessions_disable

セッションごとのコマンド履歴を無効にする(デフォルトの動作)のは、要求されている内容の反対です。
クリスページ

@ChrisPage質問者がセッションごとの履歴について尋ねている場合にのみ正しいです。bashセッションの動作を無効に.bash_historyすると、履歴を.bash_sessions/フォルダーの下に保持するのではなく、単一の履歴を再生できるようになります。これが正解です。
マットH

@MattH質問は、履歴がまったく機能していないように思われるため、履歴を再度取得する方法を尋ねます。このセッションごとの履歴機能を無効にすると、正しい方向に進みません。セッションごとの履歴メカニズムにバグがある場合は、誰かがバグレポートを提出する必要がありますが、それをオフにすることは一般にすべてのユーザーにとって何らかの形で正しいように答えを提示するのは間違っています。通常は正常に機能します。詳細については、さまざまな回答に対する私のコメントを参照してください。
クリスページ

私が最初にコメントしたときに、これについても言及すべきでした。bashの保存/復元メカニズム全体を無効にすることは最後の手段であり、可能な場合は避けるべきです。にSHELL_SESSION_HISTORY記載されて/etc/bashrc_Apple_Terminalいるように、0に設定するだけで、セッションごとのコマンド履歴動作をオフにすることができます。
クリスページ

1

このRedditスレッドからの回答は私を救った:

おそらくRVMが、bash_sessionsを実行するための出口「フック」を妨げています。.bash_profileの次の行をコメントアウトすると、機能するはずです。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

0

私も同様の問題を抱えており、履歴は記録されていません。与えられた解決策は機能しませんでしたが、やっと問題が.bash_historyの欠落と同じくらい簡単であることがわかりました

ソリューションは、に行くことだった/home/[username]/し、ファイルを追加します.bash_historyので、

nano .bash_history

次に、ファイルに何かを入力し(そうでない場合は作成されません)、終了して保存します。この後、履歴は正常に機能し始めました。


これで問題が解決する場合は、他の何かが間違っているため、他の問題を回避するために修正する必要があります。履歴ファイルがないときにBashを起動すると、作成されます。作成しようとしていない場合、または作成できない場合は、シェルスタートアップスクリプトまたはホームディレクトリのアクセス許可に問題があります。たとえば、答えを参照してください:apple.stackexchange.com/a/118764/6883
クリスページ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.