2013-05-29 09:56:16 +0000 2013-05-29 09:56:16 +0000
43
43

linuxのsh(bashではなく)のコマンドプロンプトに現在のパスを表示させるには?

sh(bashシェルではなく)のプロンプトに現在のパスを表示させたいのですが、現在は “#"と表示されているだけなので、

env PS1="$(whoami)@$(hostname):$(pwd)"
set PS1="$(whoami)@$(hostname):$(pwd)"

を導入してみましたが、明らかにディレクトリを変更したときやユーザーが変わったときに更新されません。これを動的にする方法を提案してください。

回答 (6)

77
77
77
2013-05-29 10:05:04 +0000

二重引用符 " でのコマンド置換はすぐに展開されます。これはプロンプトを表示するために必要なものではありません。単一引用符 '$PS1 での置換を保持し、プロンプトを表示するときだけ展開されます。したがって、これは動作するはずです:

export PS1='$(whoami)@$(hostname):$(pwd)'

プロンプトの最後に通常のドル記号とスペースが欲しい場合は、単に最後に $ を追加してください (エスケープは必要ありません): export PS1='$(whoami)@$(hostname):$(pwd)$ '

14
14
14
2013-05-29 10:07:44 +0000
sh-4.2$ export PS1="\u@\h:\w>"
jenny@serenity:~>cd /usr/local
jenny@serenity:/usr/local>
5
5
5
2017-06-25 05:27:44 +0000

このコマンドは私のために動作します。

export PS1="\u@\h: \W:$"

Where \u = username \h = hostname \W Name of present folder (not full path).

3
3
3
2018-11-23 13:35:39 +0000

1つは、いくつかの色を追加することによってプロンプトをポンピングすることを検討するかもしれません。例えば:

export PS1='\[\e[0;36m\]\u\[\e[0m\]@\[\e[0;33m\]\h\[\e[0m\]:\[\e[0;35m\]\w\[\e[0m\]\$ '
1
1
1
2015-10-21 12:29:41 +0000

以下のコマンドを使用して、cpanelでの設定を行います。[$(pwd)]# ‘

1
1
1
2014-10-27 14:49:59 +0000

一つの答えは二重引用符の代わりにシングルクォーテーションを使うというものでしたが、これは完全な正解ではありません。プロンプトが使用されるまで、プロンプト内のコードの評価を延期したいのです。

set PS1="$(pwd)"

は、setコマンドでプロンプトを作業ディレクトリに設定します。その代わりに、PS1 は $(pwd) のリテラル値に設定されます。

テスト/実行することによってこれを理解する:

set PS1="\$(pwd)"

. 文字列が表示されている場合: $pwd、あなたのプロンプトが動作します。リテラルパスが表示されている場合は、静的に設定されているため、プロンプトが壊れています。

関連する質問

6
10
11
5
6