LINUX.ORG.RU

Терминал Fly и far2l: разный код возврата

 , ,


0

1

Вводимые команды:

ping tydysch.com

echo $?


В терминале Fly:

ping: tydysch.com: Имя или служба не известны
echo $?
2

В far2l (Ctrl O):

ping: tydysch.com: Имя или служба не известны
echo $?
0

Почему в случае использования командной оболочки через far2l возвращается ноль?

★★★★★

Последнее исправление: Mischutka (всего исправлений: 2)

Оно же там cd незаметно для пользователя делает, может после каждой команды затирает предыдущий код возврата.

Я попробовал:

$ false
$ echo $?
0

Видимо, всё так.

xaizek ★★★★★
()
Ответ на: комментарий от Mischutka

https://github.com/MidnightCommander/mc/blob/cb1be748d88ccb691078995026a19921a2e14dbf/src/subshell/common.c#L799-L801

mc + zsh - глючит история команд

100500 тем про это было. Может там не cd, но что-то он выполняет и вроде не только в PROMPT_COMMAND. Сам я им не пользуюсь, так что особо не подскажу, но проблема скорее всего в этом.

xaizek ★★★★★
()
Ответ на: комментарий от Mischutka

Если он это делает здесь:

https://github.com/MidnightCommander/mc/blob/cb1be748d88ccb691078995026a19921a2e14dbf/src/subshell/common.c#L1119

То я не вижу никаких опций, чтобы изменить это поведение. Можно проверять статус в той же команде.

xaizek ★★★★★
()

Насколько я помню, они для каждой команды запускают новый сабшелл, по крайне мере, на винде. Когда-то давно искал решение такого же вопроса для виндового фара, сейчас тот топик найти не могу, увы. Но там было пояснение от кого-то из разработчиков, что командная строка - это не полноценный шелл, а вспомогательная фича, и код возврата не обязан сохраняться, так что гуляйте лесом, wontfix.

В некотором смысле они правы: хочешь полного контроля над оболочкой - запускай свою собственную. Или пиши однострочники.

E ★★★
()
Ответ на: комментарий от Mischutka

А, точно, просто в MC так же не работает.

xaizek ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.