summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/init.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/init.rs b/src/init.rs
index 4a237ac88..5db23c2b4 100644
--- a/src/init.rs
+++ b/src/init.rs
@@ -7,12 +7,23 @@ pub fn init(shell_name: &str) {
let shell_basename = Path::new(shell_name).file_stem().and_then(OsStr::to_str);
let setup_script = match shell_basename {
+ // The contents of `PROMPT_COMMAND` are executed as a regular Bash command
+ // just before Bash displays a prompt.
Some("bash") => {
- let script = "PS1=\"$(starship prompt --status=$?)\"";
+ let script = "
+ PROMPT_COMMAND=starship_prompt
+
+ starship_prompt() {
+ PS1=\"$(starship prompt --status=$?)\"
+ }";
Some(script)
}
+ // `precmd` executes a command before the zsh prompt is displayed.
Some("zsh") => {
- let script = "PROMPT=\"$(starship prompt --status=$?)\"";
+ let script = "
+ precmd() {
+ PROMPT=\"$(starship prompt --status=$?)\"
+ }";
Some(script)
}
Some("fish") => {