Gostaria de exibir o caminho atual no prompt sh (não no bash shell), que atualmente mostra apenas "#", tentei introduzir este
env PS1="$(whoami)@$(hostname):$(pwd)"
e
set PS1="$(whoami)@$(hostname):$(pwd)"
no /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.
$()
um executa um programa separado; seria mais rápido usar variáveis de ambiente, como$LOGNAME
,$HOSTNAME
e em$PWD
vez disso.Respostas:
As substituições de comando entre aspas duplas
"
são expandidas imediatamente. Não é isso que você deseja para o seu prompt. Aspas simples'
preservarão as substituições nas$PS1
quais serão expandidas apenas ao exibir o prompt. Portanto, isso deve funcionar:Se você deseja o cifrão usual e um espaço no final do seu prompt, basta adicionar
$
no final (não é necessário escapar):export PS1='$(whoami)@$(hostname):$(pwd)$ '
fonte
export PS1='$(whoami)@$(hostname):$(pwd)$'
eu salvei as alterações em/etc/profile
. Obrigado.set
trabalhou para mim (mas eu não tinha um nativosh
). Mas vou alterá-loexport
para estar de acordo com sua configuração./etc/profile
(veja a pergunta) ou~/.profile
?!foo@localhost:/home/fools -la
ao usarls -la
.fonte
\u@\h:\w>
como meu prompt de comandoBusyBox v1.19.4 built-in shell (ash)
.Este comando funciona para mim.
Onde
\ u = nome do usuário
\ h = nome do host
\ W Nome da pasta atual (caminho não completo)
fonte
Pode-se considerar o proxeneta adicionando algumas cores. Por exemplo:
fonte
Uma resposta foi usar aspas simples em vez de aspas duplas, no entanto, essa não é a resposta correta completa. O que você realmente deseja fazer é adiar a avaliação do código dentro do seu prompt até que o prompt seja usado.
define o prompt para o diretório de trabalho a partir do comando set.
NÃO expande $ (pwd). Em vez disso, o PS1 é definido como o valor literal de $ (pwd).
Teste / entenda isso executando:
. Se você vir a string: $ pwd, seu prompt funcionará. Se você vir o caminho literal, o prompt será quebrado porque foi definido estaticamente
fonte
Use o comando abaixo para definir como no cpanel.
exportar PS1='$(whoami)@${HOSTNAME%%.*} [$ (pwd)] # '
fonte