为什么 Alpine 的查看器命令在 GNU 屏幕中不起作用?我该如何修复它?

为什么 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 现在工作得很好,但显然这不是理想的情况,我欢迎任何更好的修复。

答案1

看起来您正在将 shell 硬编码到.screenrcbash 中,这也是您的登录 shell 吗?尝试注释掉该行并尝试。

$PATH如果做不到这一点,请比较tmux/screen 外部、screen 内部和 tmux 内部的值?如果没有任何结果,请比较env所有三种设置的输出。

答案2

我做了一些类似于OP似乎需要的事情。我有高山检查,看看我是在本地使用它还是通过屏幕远程使用它。如果是远程的,我使用 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

最终结果是,当我在 screen 中使用 alpine 并打开 URL 时,我会得到一个运行 elinks 的新 screen 进程。我可以使用适当的 ^A 命令切换到那里,并在完成后将其关闭,或者将其保持打开状态并添加额外的 URL 作为选项卡。

相关内容