Каждая команда, запущенная в bash, возвращается с кодом выхода.
Всякий раз, когда я набираю команду в приглашении bash, я хочу, чтобы она показывала состояние выхода, т.е. echo $?
Например, если я запускаю echo "hello";
по приглашению bash, вывод должен быть:
linux@linux$ hello
linux@linux$ 0
Ответы:
Код выхода из последней выполненной команды сохраняется в
$?
переменной среды. Таким образом, вы можете просто добавить эту переменную в командную строку по умолчанию, и у вас всегда будет напечатан код выхода. Приглашение хранится в$PS1
переменной окружения. Первоначально он устанавливается в/etc/bash.bashrc
сценарии, а затем в$HOME/.bashrc
.Так что отредактируйте строку
$HOME/.bashrc
(/etc/bash.bashrc
будет всей системы) из значения по умолчанию:к этому (например):
Таким образом, приглашение по умолчанию изменилось на:
0 в скобках - это ваш код выхода, см.
О значениях см. Http://www.tldp.org/LDP/abs/html/exitcodes.html.
источник
readlink /proc/$$/exe
пожалуйста? 0 означает отсутствие ошибки, вы пытались что-то, что дает ошибку:^C
илиfalse
илиasdasdasd
?PS1=$(printf "%s\\\\u@\h:%s%s\w[$?]$%s " "$yellow" "$end" "$blue" "$end")
, но он просто показывает0
все время. Есть идеи почему?$?
уже расширен до0
настройки вашегоPS1
. Делайecho $PS1
и увидишь. Вы должны либо использовать одинарные кавычки, либо избегать его как\$?
.Другой способ, который я выбрал из Arch Wiki, заключался в использовании
trap
:Эффект:
источник
Вот простой пример:
Если вы используете двойные кавычки, вы должны добавить обратную косую черту, чтобы избежать
$
:Выход:
Еще лучший способ - печатать код выхода только тогда, когда он не равен нулю.
Пример вывода:
Объяснение:
${var#pattern}
это расширение параметра bash, которое означает удаление кратчайшего подходящего шаблона из передней части $ var. Таким образом, в этом случае мы удаляем0
с фронта$?
, который будет эффективно урезать код выхода0
.Если используются двойные кавычки,
$?
будет подставлено, когдаPS1
установлено, вместо того, чтобы оцениваться каждый раз. Есть ,echo $PS1
чтобы подтвердить , что вы не имеете жёстко значениеPS1
.источник