親bashで呼び出されたサブシェルshのPS1プロンプトを変更する

親bashで呼び出されたサブシェルshのPS1プロンプトを変更する

対話型セッションを実行するときにbash時々sh

sh今回の会議で直接電話をかけましたbash

PS1私の質問は、このサブシェルのプロンプトをどのように変更できますか?

代わりにsh$使用していることを知らせるプロンプトがこれと同じであればと思います。shbash

これまで私が試したことは次のとおりです。

  • .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" 

一般的に使用されるシェルの環境ファイルに。それは仕事を簡素化します。

でも:

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

ただし、変数を宣言する場合は、$PS1最初の例のようにコマンドラインで明示的に設定する方がalias良い方法です。

関連情報