Мне нужно средство для моей проблемы с каналом xonsh Shell

avatar
Daniel Hammarberg
1 июля 2021 в 17:31
42
0
0

Проблема с каналом оболочки Xonsh

Поскольку 1-2 месяца назад у меня возникла странная проблема с Xonsh, вероятно, связанная с каналом. Каким-то образом, когда он открывает другие оболочки, скрипты и прочее, он перепутал сокеты каналов. Это приводит к невозможности отправлять какие-либо входные данные программам, таким как больше, меньше и т. Д. Базовый ввод терминала через команду Bash: чтение и прочее работает, но нет каналов.

Я не совсем уверен, как еще проще сформулировать проблему, поэтому я подумал, что могу предоставить созданную мной историю журналов. Я сравнил запуск одного и того же тривиального скрипта по трем разным путям:

.

1: Моя обычная среда Arch Linux Xonsh (где каналы в скриптах не работают). 2: Bash в указанной среде (где работает то же самое) 3: Мой сервер Debian с Xonsh (который тоже работает)

Я также заметил, что в среде с ошибками окончание less открывается перед программой, из которой оно должно получать выходные данные. Во всяком случае, вот, так сказать, логи - файл обрабатывает от запуска однострочного скрипта, передающего вывод jq через less:

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

Буду благодарен за любую помощь. В настоящее время это серьезное неудобство.

Источник

Ответы (0)