Вот простой пример:
PS1='$? > '
Если вы используете двойные кавычки, вы должны добавить обратную косую черту, чтобы избежать $
:
PS1="\$? > "
Выход:
0 > echo 'ok'
ok
0 > bogus
bogus: command not found
127 >
Еще лучший способ - печатать код выхода только тогда, когда он не равен нулю.
PS1='${?#0}> ' # single quote example
PS1="\${?#0}> " # double quote example (requires extra backslash)
Пример вывода:
> echo 'ok'
ok
> bogus
bogus: command not found
127>
Объяснение: ${var#pattern}
это расширение параметра bash, которое означает удаление кратчайшего подходящего шаблона из передней части $ var. Таким образом, в этом случае мы удаляем 0
с фронта $?
, который будет эффективно урезать код выхода 0
.
Если используются двойные кавычки, $?
будет подставлено, когда PS1
установлено, вместо того, чтобы оцениваться каждый раз. Есть , echo $PS1
чтобы подтвердить , что вы не имеете жёстко значение PS1
.