如何更改子shell的提示符

如何更改子shell的提示符

我正在尝试创建一个简单的脚本,除其他外,该脚本将创建一个子 shell:

#!/bin/sh

# setup

"${@:-$SHELL}"

# teardown

问题是:我需要更改默认提示,例如:

$ # 默认 shell
$ ./myscript
(myscript) $ # 子 shell
(myscript) $ exit
$

我尝试改变PROMPTPS1,但这些都不起作用。我怎样才能做到这一点?

PS:如果可能的话,我需要一个可以在 Bash 和 ZSH 上运行的解决方案。

答案1

我认为您可以创建一个具有不同提示的子 shell,如下所示:

$ bash --rcfile <(echo "PS1='subshell prompt: '") -i

例子

当前环境:

$ bash --rcfile <(echo "PS1='subshell prompt$ '") -i

在子外壳中:

subshell prompt$ echo hi
hi
subshell prompt$ exit
exit

回到原来的外壳:

$ 

答案2

它不起作用的原因可能是因为当您加载外壳程序(应该是例如:)时/bin/bash,它最终会重新加载其配置文件,其中包括提示符的环境变量(例如$HOME/.bashrc:)传递您想要的环境变量 - 因此您的变量被丢弃。

您可能需要检查 shell 的选项来加载自定义配置文件(例如:--rcfile在 Bash IINM 中)并使用这些选项以及\env传递所需的环境变量。问题是,一旦执行此操作,子 shell 就会变得依赖于 shell。

买者自负:我还不认为这是一个答案 - 特别是,我还没有在我的系统中尝试过任何这些。)

相关内容