Gnu-Screen

為什麼 Alpine 的查看器命令在 GNU 螢幕中不起作用,我該如何解決?

  • April 30, 2019

當我從 GNU 螢幕中在 alpine 中執行查看器命令時,它告訴我“查看器命令已完成”,但它實際上並沒有調出 Lynx(或任何其他查看器)。我什至嘗試編寫自己的腳本,該腳本只會將參數寫入文件而不是骰子。我嘗試將消息通過管道傳輸到文件,但我得到“無法執行(腳本)沒有這樣的文件或目錄”

但是,如果我關閉 alpine,從螢幕分離,然後啟動 alpine,我可以很好地使用查看器或管道消息。

那麼,這裡有什麼問題,我該如何解決呢?

更新1:

TERM 的值取決於我登錄時使用的內容——來自筆記型電腦上的 Eterm,TERMEterm螢幕之外和screen內部。從 Connect Bot 是否已screen連接。

這是我的 .screenrc

$ cat .screenrc 
defscrollback 10000
caption always "%?%F%{-b bc}%:%{-b bb}%?%C|%D|%M %d|%H%?%F%{+u wb}%? %L=%-Lw%45>%{+b by}%n%f*%t%{-}%+Lw%-0<"

shell bash

bind j focus down
bind k focus up
bind t focus top
bind b focus bottom

screen -t 'system'
screen -t 'alpine'
screen -t 'programming' 
screen -t 'suppliments' 
screen -t 'ssh'
screen -t 'webby'
screen -t 'ipython' ipython
screen -t 'mpg321'
screen -t 'irssi' 

更新 2: 更改術語值並沒有解決任何問題。我嘗試tmux了一段時間,這確實有效,但我在根據我使用的螢幕(無論最小尺寸是多少)正確調整尺寸時遇到了一些問題。

所以現在我使用了一個有點奇怪的技巧——我在我的螢幕會話中執行一個 tmux 會話並在那個 tmux 會話中執行 alpine。現在查看 URL 工作得很好,但顯然這不是理想的情況,我歡迎任何更好的修復。

看起來你在.screenrcto bash 中對你的 shell 進行硬編碼,那也是你的登錄 shell 嗎?嘗試註釋掉該行並嘗試。

如果做不到這一點,$PATH從 tmux/screen 外部、螢幕內部和 tmux 內部比較你的值?如果沒有任何東西從那裡跳出來,請比較env所有三個設置的輸出。

我做了一些類似於 OP 似乎需要的事情。我有 alpine 檢查,看看我是在本地使用它還是通過螢幕遠端使用它。如果它是遠端的,我使用 screen 打開一個呼叫 elinks 的腳本,如果它是本地的(即其他任何東西),我使用 firefox 打開 URL。

在 .pinerc 中:

url-viewers=_TEST("test '${TERM}' = screen-bce")_ "/usr/bin/screen screlinks _URL_", "/usr/bin/firefox _URL_"

我稱之為“screlinks”的腳本檢查是否已經有正在執行的 elinks,如果有,則使用 -remote 選項打開一個新選項卡。

running='elinks -remote ping()'
if $running
then # echo "elinks running"
 /usr/bin/elinks -remote $@
else # echo "elinks not running"
 /usr/bin/elinks $@
fi

最終結果是,當我在螢幕中使用 alpine 並打開一個 URL 時,我得到一個執行 elinks 的新螢幕程序。我可以使用適當的 ^A 命令切換到那裡,並在完成後將其關閉,或者將其保持打開狀態並添加額外的 URL 作為選項卡。

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