Osx

為什麼 macOS 上的 screen 不接收我的 ~/.terminfo?

  • March 1, 2022

我想讓我的終端(rxvt-unicode)工作的Terminfo,這樣當我從 Linux SSH 到 macOS 時,Home/End 和其他鍵工作正常。

通常,為了使用 Linux 遠端主機完成此操作,我使用如下腳本:

ssh "$1" 'mkdir -p ~/.terminfo/r'
for f in /usr/share/terminfo/r/rxvt-unicode{,-256color}
do
   scp "$f" "$1":.terminfo/r/
done

但是,這不適用於 macOS。

當我跑步時screen,首先我得到“TERM too long - sorry.”。

將其更新到 brew 版本 (4.06.02) 後,我現在收到“找不到 ‘rxvt-unicode-256color’ 的 terminfo 條目”。

TERM正確設置為rxvt-unicode-256color,並且~/.terminfo/r/rxvt-unicode-256color存在。

執行screenwithTERMINFO=$HOME/.terminfo/也沒有效果。

ncurses對文件系統(例如 MacOS 和 OS/2)使用2 個字元,其中文件名保留大小寫/不區分大小寫。這記錄在**NEWS**文件中。順便說一句,Apple 提供了一個舊版本的 ncurses (5.7),它對於這個功能來說仍然足夠新。

攜帶式應用程序不應依賴於終端數據庫的任何特定組織……

順便說一句,xterm-256color 的目前 terminfo 條目不適用於舊的 ncurses 5.7 基本系統,因為顏色對值超出了限制。對 rxvt-unicode 的影響取決於源的構造方式。常見問題解答中提到了這一點:

ncurses 6.1引入了對大量功能的支持,例如,超過 32767 種顏色對。其他實現通常將超出範圍的值視為零。

執行(如macOS)揭示了以下內容screendtruss``strace

2131/0x12997:  access("/Users/vladimir/.terminfo/72/rxvt-unicode-256color\0", 0x4, 0x7FFF5F2B56EC)       = -1 Err#2

無論出於何種原因,screen使用第一個字母的十六進製表示而不是簡單的第一個字母來展開terminfo目錄結構。

所以,要修復它,我必須執行:

ln -s r ~/.terminfo/72

現在一切似乎都正常了。

引用自:https://unix.stackexchange.com/questions/410335