在从父 bash 调用的子 shell sh 中更改 PS1 提示符

在从父 bash 调用的子 shell sh 中更改 PS1 提示符

当我运行交互式bash会话时,我有时会尝试使用sh.

sh我直接从本次会议中致电bash

我的问题是,我怎样才能改变PS1这个子 shell 的提示符?

我希望提示是这样的sh$,通知我我正在使用sh而不是bash

到目前为止我尝试过的是:

  • .bashrc我制作了一个类似于命名的配置文件.shrc
  • 我只在里面放了一行:export PS1='$(echo ${0})\$ '
  • 然后我修改~/.profile说如下:

    # if running bash
    if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
        if [ -f "$HOME/.bashrc" ]; then
            . "$HOME/.bashrc"
        fi
    # if running another shell
    else
        if [ -f "$HOME/.shrc" ]; then
            . "$HOME/.shrc"
        fi
    fi
    
  • 我重新启动了终端,但更改并未应用。

  • 如果我手动运行. ~/.shrcsh更改得到应用。

我究竟做错了什么?

答案1

默认情况下它不会获取该文件。您可以指示它这样做:

ENV=~/.shrc sh

或者您可以添加:

alias sh="PS1='\$0\$ ' sh" 

到您常用的 shell 的环境文件。它可以简化事情。

甚至:

alias sh='ENV=~/.shrc sh'

不过,如果您只想为其声明一个变量,$PS1那么像第一个示例一样在命令行上显式设置alias可能是更好的方法。

相关内容