"sh"で呼び出されたフルbashログインでない場合はスクリプトを実行する

"sh"で呼び出されたフルbashログインでない場合はスクリプトを実行する

私は現在、プロンプトがシェルのフルカラーとは異なる色になるように端末を変更しようとしています。
OS X 10.10デスクトップとUbuntu 14.10サーバーでこれを行いたいと思います。
私が知っている唯一の方法はを修正することです$PS1
これを行うには、ログイン時にシェルがソースとして使用するスクリプトに入れる必要があります。そうですか?

/bin/shしかし、OSでは
今知っていますsu - <user>。しかし、動作するにはそれが必要ですsu <user>
できるrootユーザーのログインシェルを変更しますが、代わりに

これまでに私が見つけたものは次のとおりです。

bashソースとして呼び出し、bashソースとしてログインしますsu -

/etc/profile
/etc/bashrc
~/.profile

bashソースとして呼び出し、bashソースとしてログインしますsu

~/.bashrc

bashソースとして呼び出し、shソースとしてログインしますsu -

/etc/profile
/etc/bashrc
~/.profile

bashソースとして呼び出してshログインすると、su何も生成されません。

ハイジャックも試しましたが、$PROMPT_COMMAND呼び出すとクリアされますsu

存在するバッシュマニュアルそれは言う:

名前shで呼び出す

shBashが名前で呼び出されると、POSIX規格に準拠しながら履歴バージョンの起動動作をできるだけ似て模倣しようとします。sh

このオプションを使用して対話型ログインシェルまたは非対話型シェルとして呼び出されると、まずコマンドを順番に読み込んで--login実行しようとします。このオプションを使用すると、この動作を抑制できます。というインタラクティブシェルを呼び出すと、Bashは変数を探し、その値が定義されている場合は展開し、拡張値を読み取り、実行するファイル名として使用します。 asを呼び出すシェルは他の起動ファイルからコマンドを読み込んで実行しようとしないため、このオプションは効果がありません。この名前で呼び出された非対話型シェルは、他の起動ファイルを読み取ろうとしません。/etc/profile~/.profile--noprofileshENVsh--rcfilesh

呼び出されると、shBash は起動ファイルを読み込んで POSIX モードに入ります。

では…設定できる方法はないでしょうか$ENV
単に呼び出す前に設定することはsu効果がありません。

$PS1それとも、UIDが変更されたとき(完全にログインしているかどうかにかかわらず)を使用したり、su - ...ルートのログインシェルを変更したり、su/を使用せずにUIDを変更したりする他の方法はありますかbash

答え1

su -c bash

入力が多すぎる場合は、別名を作成してください。

plainは初期化ファイルをロードしないことを正しく分析したので、su構成またはコマンドを変更する必要があります。

答え2

私は個人的にMacで使用しており、Ubuntuサーバーでも動作します。しかし、2つのファイルを編集しました。

rootの.profileに私が入れました。

PS1="\[\033[1;31m\]\u\[\e[m\]@\h \[\e[0;32m\]\w\[\e[m\] \$ " # Root

私の個人ユーザーの.bash_profileを入力してください。

PS1="\[\033[1;32m\]\u\[\e[m\]@\h \[\e[0;32m\]\w\[\e[m\] \$ " # User

効果は次のとおりです。

私の端末 ここですべての色を見つけることができます。http://blog.taylormcgann.com/tag/prompt-color/

しかし、あなたの場合は、このソリューションを使用する必要があると思います。 https://unix.stackexchange.com/a/174/50145

関連情報