0

Xonsh shell 管道问题

从 1-2 个月前开始,我就遇到了 Xonsh 这个奇怪的可能与管道相关的问题。不知何故,当它打开其他 shell、脚本和其他东西时,它弄乱了管道套接字。这导致无法将任何输入发送到更多、更少等程序。通过 Bash 的基本终端输入:s 读取命令和东西可以工作,但没有管道。

我不完全确定如何用语言更清楚地表达问题,这就是为什么我认为我会提供一些我创建的日志历史记录。我比较了通过三种不同的路径运行相同的简单脚本:

1:我常用的 Arch Linux Xonsh 环境(脚本中的管道失败)。2:在上述环境中进行 Bash(同样的工作) 3:我的一个运行 Xonsh 的 Debian 服务器(也可以)

我还注意到,在错误的环境中,结尾 less 在它应该接收输出的程序之前打开。无论如何,这里是日志,可以这么说 - 文件处理从启动 1 行脚本通过 less 管道 jq 输出:

My "go-to" Arch Linux Xonsh environment: (running prompt_toolkit3)

1_shell/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.35 0 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 1 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 2 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 255 -> /dev/pts/36

1_one-liner/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.35 0 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 1 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 2 -> /dev/pts/36
lr-x------ 1 daniel daniel 64  1 jul 17.35 255 -> (( 1-line Bash script ))

1_jq/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.35 0 -> /dev/pts/36
l-wx------ 1 daniel daniel 64  1 jul 17.35 1 -> 'pipe:[569259498]'
lrwx------ 1 daniel daniel 64  1 jul 17.35 2 -> /dev/pts/36
lr-x------ 1 daniel daniel 64  1 jul 17.35 3 -> (( JSON file ))

1_less/fd/:

lr-x------ 1 daniel daniel 64  1 jul 17.35 0 -> 'pipe:[569259498]'
lrwx------ 1 daniel daniel 64  1 jul 17.35 1 -> /dev/pts/36
lrwx------ 1 daniel daniel 64  1 jul 17.35 2 -> /dev/pts/36
lr-x------ 1 daniel daniel 64  1 jul 17.35 3 -> /dev/pts/36


Arch Linux Bash environment: (the shell I've left behind for Xonsh)


2_shell/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.36 0 -> /dev/pts/76
lrwx------ 1 daniel daniel 64  1 jul 17.36 1 -> /dev/pts/76
lrwx------ 1 daniel daniel 64  1 jul 17.36 2 -> /dev/pts/76
lrwx------ 1 daniel daniel 64  1 jul 17.36 3 -> /dev/ptmx
lrwx------ 1 daniel daniel 64  1 jul 17.36 4 -> 'anon_inode:[eventpoll]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 5 -> 'socket:[569061930]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 6 -> 'socket:[569061931]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 7 -> /dev/pts/117
lrwx------ 1 daniel daniel 64  1 jul 17.36 8 -> /dev/ptmx
lrwx------ 1 daniel daniel 64  1 jul 17.36 9 -> /dev/pts/121

2_one-liner/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.36 0 -> /dev/pts/76
lrwx------ 1 daniel daniel 64  1 jul 17.36 1 -> /dev/pts/117
lrwx------ 1 daniel daniel 64  1 jul 17.36 2 -> /dev/pts/121
lr-x------ 1 daniel daniel 64  1 jul 17.36 255 -> (( 1-line Bash script ))

2_jq/fd/:

lrwx------ 1 daniel daniel 64  1 jul 17.36 0 -> /dev/pts/76
l-wx------ 1 daniel daniel 64  1 jul 17.36 1 -> 'pipe:[569274279]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 2 -> /dev/pts/121
lr-x------ 1 daniel daniel 64  1 jul 17.36 3 -> (( JSON file ))

2_less/fd/:

lr-x------ 1 daniel daniel 64  1 jul 17.36 0 -> 'pipe:[569274279]'
lrwx------ 1 daniel daniel 64  1 jul 17.36 1 -> /dev/pts/117
lrwx------ 1 daniel daniel 64  1 jul 17.36 2 -> /dev/pts/121
lr-x------ 1 daniel daniel 64  1 jul 17.36 3 -> /dev/pts/121



Debian Xonsh environment: (running prompt_toolkit2)


xonsh:

lrwx------ 1 daniel daniel 64  1 jul 17.47 0 -> /dev/pts/17
lrwx------ 1 daniel daniel 64  1 jul 17.47 1 -> /dev/pts/17
lrwx------ 1 daniel daniel 64  1 jul 17.47 2 -> /dev/pts/17
lrwx------ 1 daniel daniel 64  1 jul 17.47 3 -> 'anon_inode:[eventpoll]'
lrwx------ 1 daniel daniel 64  1 jul 17.47 4 -> 'socket:[1604535]'
lrwx------ 1 daniel daniel 64  1 jul 17.47 5 -> 'socket:[1604536]'
lrwx------ 1 daniel daniel 64  1 jul 17.47 6 -> /dev/ptmx
lrwx------ 1 daniel daniel 64  1 jul 17.47 7 -> /dev/pts/42
lrwx------ 1 daniel daniel 64  1 jul 17.47 8 -> /dev/ptmx
lrwx------ 1 daniel daniel 64  1 jul 17.47 9 -> /dev/pts/43

bash:

lrwx------ 1 daniel daniel 64  1 jul 17.52 0 -> /dev/pts/17
lrwx------ 1 daniel daniel 64  1 jul 17.52 1 -> /dev/pts/42
lrwx------ 1 daniel daniel 64  1 jul 17.52 2 -> /dev/pts/43
lr-x------ 1 daniel daniel 64  1 jul 17.52 255 -> (( 1-line Bash script ))

jq:

lrwx------ 1 daniel daniel 64  1 jul 17.53 0 -> /dev/pts/17
l-wx------ 1 daniel daniel 64  1 jul 17.53 1 -> 'pipe:[110134119]'
lrwx------ 1 daniel daniel 64  1 jul 17.53 2 -> /dev/pts/43
lr-x------ 1 daniel daniel 64  1 jul 17.53 3 -> (( JSON FILE ))

less:

lr-x------ 1 daniel daniel 64  1 jul 17.56 0 -> 'pipe:[110134119]'
lrwx------ 1 daniel daniel 64  1 jul 17.56 1 -> /dev/pts/42
lrwx------ 1 daniel daniel 64  1 jul 17.56 2 -> /dev/pts/43
lr-x------ 1 daniel daniel 64  1 jul 17.56 3 -> /dev/tty

我会很感激任何帮助。目前这是一个严重的不便。

4

0 回答 0