8

Я просто вставил кучу кода в свою оболочку, но забыл удалить начальный % перед запуском команды. Похоже, что ничего не сделал. Почему это ничего не делает в моей оболочке (zsh)?

> % echo foo

В bash я получаю следующее

> % echo foo
bash: fg: %: no such job

Я просто хочу быть уверен, что выполнение моей команды не имело побочного эффекта.

1 ответ1

8

% относится к 'jobid', который используется как часть функций zsh для управления заданиями и управления процессами. Цитировать из руководства пользователя:

'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.

Пример:

$> man zshall &
[1]  + 31392 suspended (tty output)  man zshall
$> jobs
[1]  + suspended (tty output)  man zshall
$> %
<manpage-opens-for-zshall>

Подробнее об этом читайте здесь: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

Чтобы ответить на ваш реальный вопрос: если ваш zsh не помещает туда предупреждение («fg: no current job» и т. П.), Значит, есть / была работа. Пример:

$> sleep 60 &
$> % echo foo
[1]  + 411 running    sleep 60
fg: job not found: echo

% Только что вернул фоновый процесс и запустил его. Через 60 секунд он получил следующий «jobid», который не был найден.

Таким образом: поведение, которое вы испытали, немного странно. Без вашего полного zshrc трудно сказать, что именно происходит. Похоже, вам удалось сообщить zsh, что символ '%' запускает комментарий. Я бы проверил параметр histchars для его 3-го значения:

$> echo $histchars

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .