題:
為什麼Mac上的bash歷史記錄無法保存?
abaini01
2015-12-08 23:31:28 UTC
view on stackexchange narkive permalink

我一直使用bash進行工作,從來沒有遇到過問題。現在,它不再在歷史記錄中保存任何命令。如果我打開一個窗口終端,請嘗試一些命令,它看起來一切正常,並使用箭頭鍵向我顯示歷史記錄。但是,如果我關閉窗口(並且應該將其保存在.bash_history文件中的時間)並打開另一個窗口,則沒有最後一個命令的跡象。

如何查找出什麼問題了?或從空白重新設置所有內容。

可能是您的個人資料或rc文件。裡面有什麼?
.bash_history的權限和所有者是什麼?我的是600個,歸我所有。另外,$ HIST_FILE中有什麼?
@blm權限是正確的;打印我發現的有關[.bash_sessions](https://www.reddit.com/r/osx/comments/397uep/changes_to_bash_sessions_and_terminal_in_el/)的$ HIST_FILE。顯然,在會話結束時,操作系統將這些文件保存到歷史文件時會出現問題。我不想再調查了,所以我只是將其放在我的家庭.bash_sessions_disable中,並知道它會返回默認行為
請考慮向Apple提交錯誤報告:https://developer.apple.com/bug-reporting/
六 答案:
Sysqa
2015-12-23 16:14:20 UTC
view on stackexchange narkive permalink

我這樣做:

將變量添加到 .bash_profile 文件

SHELL_SESSION_HISTORY = 0

重新啟動終端,然後按我的意願運行。(我在關閉終端后保存了命令)

P.S。我還使用了 HISTFILESIZE HISTSIZE 變量

HISTSIZE是在bash會話中存儲在歷史記錄列表中的行數或命令數

HISTFILESIZE是(a)在會話啟動時歷史文件中允許的行或命令的數量,以及(b)在您的末尾存儲在歷史文件中的行或命令的數量bash會話以供將來使用。

在El Capitan上添加一行適合我,謝謝。
謝謝!如果有人碰巧知道,我也想知道為什麼這也行得通。(History = 0會在我無知的頭腦中暗示所有歷史都將丟失,但似乎產生相反的效果。)
@Sysqa是否有一些“中間”解決方案?“為每個恢復的終端會話獨立保存和恢復bash命令歷史記錄”的功能聽起來像某些程序可能會受益的好功能。有什麼方法可以從以前的配置中受益,還有從某種配置中獲得新收益?
Chris Page
2015-12-16 19:33:42 UTC
view on stackexchange narkive permalink

OS X 10.11 El Capitan 開始,系統安裝的腳本 / etc / bashrc_Apple_Terminal 與Terminal配合使用,以便為恢復的每個終端保存/恢復單獨的命令歷史記錄恢復

閱讀 / etc / bashrc_Apple_Terminal 中的註釋,以獲取有關如何管理每終端命令歷史記錄以及如何對其進行自定義的說明。

如果您自定義 PROMPT_COMMAND ,請確保將其串聯到以前的值,這樣就不會清除系統提供的命令:

  PROMPT_COMMAND =“ $ {PROMPT_COMMAND:+ $ PROMPT_COMMAND;}您的代碼在這裡”  

如果您使用 trap 安裝 EXIT 信號處理程序,請確保做類似的事情(或者,如果您不知道如何連接到先前的值,則從處理程序中調用shell_session_update,這有點麻煩)。

退出shell時,此代碼將保存新命令到終端在〜/ .bash_sessions 。要查看它是否遇到任何問題,而不是關閉終端,而是使用 exit (或Control-D)手動退出外殼。它記錄進度消息。請注意它是否未完成,或者是否顯示任何警告或錯誤消息。

通常, bashrc_Apple_Terminal 會嘗試檢測和禁用每個會話的歷史記錄,例如用戶執行了與之不兼容的任何自定義。聽起來您可能發現了一個無法處理的問題。請考慮向Apple提交錯誤報告: https://developer.apple.com/bug-reporting/

我沒有做任何特殊的配置,所以我想這不是問題。您能否解釋一下PROMPT_COMMAND的功能。
@loco.loop您的意思是“ Bash的PROMPT_COMMAND變量有什麼用?”還是你的意思是“ / etc / bashrc_Apple_Terminal`將PROMPT_COMMAND用於什麼?”?如果是後者,請參考詳細記錄的代碼。或者,您應該對此進行另一個問答。
我的意思是PROMPT_COMMAND用於... @ChrisPage
@loco.loop我會向您介紹Bash文檔,或建議您開始對此進行問答。
Nate
2017-02-01 13:08:04 UTC
view on stackexchange narkive permalink

以防萬一其他人安裝了RVM(Ruby版本管理器):檢查以查看〜/ .profile 〜/中是否包含以下行。bashrc 〜/ .bash_profile 文件。

[[-s“ $ HOME / .rvm / scripts / rvm”]] &&源“ $ HOME / .rvm / scripts / rvm”

RVM可能阻止bash_sessions運行的退出“鉤子”。

那是我的問題。嘗試將其註釋掉。

來源: Reddit

Vesal
2018-08-11 02:22:35 UTC
view on stackexchange narkive permalink

在全新安裝的Mac OS X(更新至10.13.6)上,未保存bash命令歷史記錄。也沒有.bashrc或.bash_profile文件。在這種情況下,只需添加一個空的.bashrc文件即可為我修復。

  touch .bashrc
 

這似乎就是您所需要的...

似乎也解決了Mojave / 10.14的問題:-)
對我來說也固定,這應該有更多的投票
gilm
2019-01-05 00:53:07 UTC
view on stackexchange narkive permalink

新安裝的osx Mojave也有同樣的問題。我檢查了〜/ .bash_history 文件,並看到了:

$ ls -l〜/ .bash_history -rw ------- 1個root員工599 Jan 4 20:50 /Users/gilm/.bash_history

只需將其重新編織回gilm即可解決問題。我用過:

sudo chown gilm /Users/gilm/.bash_history

這解決了我的問題。

Hunter
2017-09-17 00:28:15 UTC
view on stackexchange narkive permalink

您還可以使用以下內容創建一個 .bash_logout 文件:

  shell_session_update
 

來自GitHub評論

或者,一次手動輸入`trap shell_session_update EXIT`並註銷。`/ etc / bashrc_Apple_Terminal`腳本中的線索太無聊了,無法在此處包含。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...