web-dev-qa-db-ja.com

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

私のサーバーの1つで、プロンプトは[user @ Host path]です。パスを自動入力するために「タブ」を実際に押すことができます。

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

13
Alex

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変数PS1、&cを含む)および プロンプトの印刷 =(Prompt_COMMANDの長い名前であるPS1について説明しています)。次の行を~/.bashrcに追加します

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

tcshには オンラインマニュアル (そのマニュアルページのみ)があり、 プロンプト 環境変数に関するセクションがあります。次の行を~/.tcshrcに追加します

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

zshには ユーザーガイドプロンプトの簡単なガイド があり、さらに manual と非常に詳細なリファレンスがありますon Prompt Expansion 。次の行を~/.zshrcに追加します

export PS1='[%n@%m %~] '
27
Joseph Holsten

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

あなたの問題は、PS1を設定する.profileまたは.bashrcがないという単純な問題であるか、ログインシェルがまったくbashではない可能性があります。

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

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

6
DigitalRoss

たぶん、あなたはbashを使っていませんが、shとあなたのプロンプトは適切に設定されていません(これがshでも可能なら)。

次のように入力すると、現在のシェルを取得できます:echo $Shell

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

4
knittl

ログインスクリプトの1つにPS1という変数を設定する必要があります(たとえば、/ etc/profileまたは〜/ .bashrc)。ディストリビューションによって異なります。

例: http://www.cyberciti.biz/tips/howto-linux-unix-bash-Shell-setup-Prompt.html

2
Palantir