Отображать статус возврата без нуля в PS1

Я хочу включить статус возврата в мое приглашение. (Легко добавить '$? ' , Не так ли?)

Тем не менее, я хочу, чтобы возвращаемый статус (и конечное пространство) возвращался не равным нулю.

Пример:

 sd ~ $ false 1 sd ~ $ true sd ~ $ 

3 Solutions collect form web for “Отображать статус возврата без нуля в PS1”

Убедитесь, что promptvars опция promptvars (она по умолчанию). Затем поместите любой код, который вам нравится в PROMPT_COMMAND чтобы определить переменную, содержащую именно то, что вы хотите в подсказке.

 PROMPT_COMMAND='prompt_status="$? "; if [[ $prompt_status == "0 " ]]; then prompt_status=; fi' PS1='$prompt_status\h \w \$ ' 

В zsh вы можете использовать условную конструкцию в PS1 (bash не имеет эквивалента).

 PS1='%(?,,%? )%m %~ %# ' 

Лучшее, что я могу получить, получается

 PS1='${?/#0/}'":$PS1" 

где я добавил : как разделитель, так что не совсем то, что в этом вопросе.

Не требуется использовать PROMPT_COMMAND . Здесь он делает ненужные осложнения. Все, что вам нужно сделать, это определить эту функцию:

 prompt_status() { [ $? = 0 ] && return echo -n "${?} " } 

И затем установите PS1 следующим образом:

 shopt -s promptvars PS1='$(prompt_status)'$PS1 

Оценка prompt_status() внутри подоболочки защищает $? от изменения.

  • Выделите разделители пути в PS1
  • Правильное место для установки командной строки (PS1) при использовании sh / bash / zsh вместе
  • Как установить команды, которые запускаются перед каждым приглашением?
  • Изменение подсказки bash в зависимости от того, является ли первый символ пробелом
  • Обратный поиск прерывает многолинейную подсказку терминала
  • Вызов Bash - backspace удаляет правый выровненный текст (можно остановить?)
  • скрипт bash не создает псевдоним и не обновляет $ PS1
  • Ошибка при включении командной строки bash
  • Доступна ли какая-либо специальная информация (например, предыдущая команда) для PROMPT_COMMAND?
  • что означает «tc @ box: / home $»?
  • Пользовательское приглашение bash - проблема позиционирования курсора
  • Linux и Unix - лучшая ОС в мире.