Search code examples
macosbashpromptps1

Changing PS1 prompt in a Bash parent shell


Using a script, I was to change the prompt of the parent Bash shell. I have tried the following:

PS1="Hello World > "

This changes the prompt of the subshell, which the script is running in, but which command would I use to change the prompt of the parent shell. Any ideas?


Solution

  • In all cases the parent shell must cooperate. The child process in a unix environment cannot influence the parent process without its cooperation.

    Try this in the subshell script changePrompt.sh:

    echo 'PS1="Hello World > "'
    

    And then call the script from the parent shell like this:

    eval "$(changePrompt.sh)"
    

    Or, a different approach: Source the script instead of calling it. changePrompt.sh:

    PS1="Hello World > "
    

    Call it like this:

    source changePrompt.sh
    

    or simply:

    . changePrompt.sh