為什麼 Alpine 的查看器命令在 GNU 螢幕中不起作用,我該如何解決?
當我從 GNU 螢幕中在 alpine 中執行查看器命令時,它告訴我“查看器命令已完成”,但它實際上並沒有調出 Lynx(或任何其他查看器)。我什至嘗試編寫自己的腳本,該腳本只會將參數寫入文件而不是骰子。我嘗試將消息通過管道傳輸到文件,但我得到“無法執行(腳本)沒有這樣的文件或目錄”
但是,如果我關閉 alpine,從螢幕分離,然後啟動 alpine,我可以很好地使用查看器或管道消息。
那麼,這裡有什麼問題,我該如何解決呢?
更新1:
TERM 的值取決於我登錄時使用的內容——來自筆記型電腦上的 Eterm,
TERM
在Eterm
螢幕之外和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 工作得很好,但顯然這不是理想的情況,我歡迎任何更好的修復。
看起來你在
.screenrc
to 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 作為選項卡。