Linuxプロンプトにログイン名とパスではなく$が表示されるのはなぜですか?


13

私のサーバーの1つでは、プロンプトは[user @ host path] ...であり、実際に「tab」を押してパスを自動入力できます。

しかし、私の新しいUbuntuサーバーでは、それは単なるドル記号ですか?


1
pwd現在の作業ディレクトリの名前を印刷するには、いつでも入力できます。また、タブ補完も機能していないと言っていますか?(私が使用する一部のマシンでは、rootとしてログインした場合にのみこの短いプロンプトが表示されますが、嬉しいことに良い警告としてそのまま残します。 、あなたは?)
アルジャン

アレックスは、どのディストリビューションを使用しているのか教えてもらえますか?
反転

Ubuntuを使用しています。
アレックス

最新のUbuntuですか?また、タブ補完も機能していないと言っていますか?
アルジャン

あなたは2つの質問をしているようです:なぜパスをタブで埋めないのか、そしてなぜプロンプトは[user @ host path]の代わりにただのドル記号なのか。両方に答える人はいないので、答えに投票するのは少し難しいです。
ジョセフホルステン

回答:


27

あなたは2つの質問をしているので、両方に答えます。

オートコンプリートファイルパスがタブ化されないのはなぜですか?

シェルがサポートしていないか、タブ補完が有効になっていないためです。

これを解決するには、まずシェルが何であるかを発見する必要があります。シェルを楽しむマシンで、実行します

echo $SHELL

/bin/bash一般的な/bin/tcsh/bin/zshまたはあまり一般的ではないもの、またはその他の完全なものが表示される場合があります。

これで、Ubuntuマシンでシェルを変更できます。そのマシンで、最初に目的のシェルが存在することを確認します。シェルはUbuntuマシン上の他の場所と同じ場所にない場合があるため、次のように入力して場所を確認します。

 which bash

これ/bin/bashにより/usr/bin/bash、必要なシェルのパス(、、またはなど)が得られます/usr/local/bin/bash。あなたはbashの以外のシェルをしたい場合はもちろん、あなたは言うでしょうwhich tcshwhich zshまたは類似しました。

パスが表示されないが、代わりにが表示されるbash not found場合は、適切なパッケージをインストールしwhich、シェルをインストールした場所を見つけるために再度使用する必要があります。

選択したシェルのパスを使用して、実行して最終的にシェルを変更できます

chsh -s /bin/bash

/bin/bash選択したシェルの適切なパスに置き換えます。

プロンプトが[user @ host path]ではなくドル記号になるのはなぜですか?

ので、あなたのプロンプトの環境変数の$PS1$PS2と上のようにします。これらはシェル間で移植できない傾向があるため、候補となる可能性のあるリンクを次に示します。

bashには、Bash変数(、&​​c を含む)およびプロンプトの印刷(の長い名前を説明している)のページを含む広範なマニュアルがあります。次の行を追加しますPS1PROMPT_COMMANDPS1~/.bashrc

export PS1='[\u@\h \w] '

tcsh持っているオンラインマニュアルのセクションで(ちょうどそのmanページ)、プロンプトの環境変数を。次の行を追加します~/.tcshrc

set prompt='[%n@%m %~] '

zsh持っているユーザーガイドと、プロンプトへの簡単なガイドだけでなく、手動で非常に詳細な参照すると、プロンプトの拡張を。次の行を追加します~/.zshrc

export PS1='[%n@%m %~] '

6

Bashだけがシェルではありません。

問題は、PS1を設定する.profileまたは.bashrcがないという単純な問題であるか、ログインシェルがまったくbashでないことが考えられます。

Bashはgnu readline、タブ補完などに使用します。これは複雑なテーマであり、readlineにはユーザーごとの構成ファイルもあります。

参照してくださいman bashman shman 3 readline。Bashはに応答し--versionます。多くのLinuxシステムで/bin/shは、実際にはbash ではありませんが、通常はの障害バージョンですash


1
ではdashなくash?私はこのような何か読んで思った
knittl

2
.profileまたは.bashrcがないため+1-AlexがUbuntuをインストールしたときに最初にアカウントを設定しなかった場合、デフォルトでは、新しいユーザーは.bashrcを持たず、PS1を設定しません。
コリープラステック2009年

4

私は推測しますが、bashを使用していませんが、shとプロンプトが正しく設定されていません(shで可能であれば)。

次のように入力して、現在のシェルを取得できます。 echo $SHELL

bashを開始する場合は、単に入力します bash


他のシェルでプロンプトを設定できます。というシェルはありませんsh。エコー$SHELLすると、と呼ばれる環境変数が出力されSHELLます。この環境変数は単にシェルを指し、bashによってのみ設定されます。現在のプロセスの一部の親がbashであった可能性があることを弱く示しているだけなので、どのシェルが実行されているかを判断することはほぼ役に立ちません。
DigitalRoss

さて、シェルのプログラム名はsh(/ bin / sh内)です。はい、echo $ SHELLは通常設定されている変数SHELLを出力します。
knittl

すべてのUNIXシステムには/bin/sh、はいという実行可能ファイルがあります。しかし、名前がのシェルはありませんsh。私が考えることができashkshcshbashzsh、とtcsh。最初のものはLinuxとNetBSDの通常の/ bin / sh、最後は通常のFreeBSDシェル、その他はオプションのシェルです。多くのデスクトップ環境では、ユーザーのログインシェルをbashに変更し、/ bin / shはashのままにします。
DigitalRoss

2
@DigitalRoss shはBourneシェルです。en.wikipedia.org/wiki/Bourne_shell一部のシステム(Solaris)には、再実装(ash、dash、bash、ksh、zsh)の1つのコピーではなく、Bourneシェルのバージョンがまだ付属しています。
クリスジョンセン

...また、bashは「Bourne again shell」として知られており、Bourne shell、cshおよびkshからいくつかの機能を継承しています。
反転

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.