Como exibir o caminho atual no prompt de comando no sh do linux (não no bash)?

35

Eu gostaria de exibir o caminho atual no prompt sh (não shell bash), que atualmente apenas mostra "#", Eu tentei com a introdução deste

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

e

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

em /etc/profile .

Mas, como é óbvio, isso não é atualizado quando o diretório é alterado ou o usuário é alterado. Por favor, sugira uma maneira de tornar isso dinâmico.

    
por Bleamer 29.05.2013 / 11:56

5 respostas

57

Substituições de comandos em aspas duplas " são expandidas imediatamente. Isso não é o que você quer para o seu prompt. Aspas simples ' preservarão as substituições em $PS1 , que só serão expandidas ao exibir o prompt. Por isso, isso deve funcionar:

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

Se você quiser o cifrão de costume e um espaço no final do seu prompt, basta adicionar $ no final (não é necessário escapar): export PS1='$(whoami)@$(hostname):$(pwd)$ '

    
por 29.05.2013 / 12:05
10
sh-4.2$ export PS1="\u@\h:\w>"
jenny@serenity:~>cd /usr/local
jenny@serenity:/usr/local>
    
por 29.05.2013 / 12:07
2

Este comando funciona para mim.

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

Onde o \ u = nome de usuário \ h = nome do host \ W Nome da pasta atual (não o caminho completo)

    
por 25.06.2017 / 07:27
1

Uma resposta foi usar aspas simples em vez de aspas duplas, no entanto, essa não é a resposta correta completa. O que você realmente quer fazer é adiar a avaliação do código dentro do seu prompt até que o prompt seja usado.

set PS1="$(pwd)" 

define o prompt para o diretório de trabalho a partir do comando set.

set PS1="\$(pwd)" 

NÃO expande $ (pwd). Em vez disso, PS1 é definido para o valor literal de $ (pwd).

Teste / Compreenda isto executando:

echo $PS1

Se você vir a string: $ pwd, seu prompt funciona. Se você vir o caminho literal, o prompt será quebrado porque foi definido estaticamente

    
por 27.10.2014 / 15:49
1

Use o comando abaixo para definir como no cpanel.

export PS1='$(whoami)@${HOSTNAME%%.*} [$ (pwd)] # '

    
por 21.10.2015 / 14:29