Đây là một ví dụ đơn giản:
PS1='$? > '
Nếu sử dụng dấu ngoặc kép, thì bạn phải thêm dấu gạch chéo ngược để thoát $:
PS1="\$? > "
Đầu ra:
0 > echo 'ok'
ok
0 > bogus
bogus: command not found
127 >
Một cách thậm chí tốt hơn là chỉ in mã thoát khi nó khác không.
PS1='${?#0}> ' # single quote example
PS1="\${?#0}> " # double quote example (requires extra backslash)
Đầu ra mẫu:
> echo 'ok'
ok
> bogus
bogus: command not found
127>
Giải thích: ${var#pattern}là một mở rộng tham số bash có nghĩa là loại bỏ mẫu phù hợp ngắn nhất khỏi mặt trước của $ var. Vì vậy, trong trường hợp này, chúng tôi sẽ xóa 0từ phía trước $?, điều này sẽ cắt ngắn một cách hiệu quả mã thoát 0.
Nếu sử dụng dấu ngoặc kép, $?sẽ được thay thế khi PS1được đặt, thay vì được đánh giá mỗi lần. Làm echo $PS1để xác nhận rằng bạn không có giá trị mã hóa cứng PS1.