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

¿Cómo se muestra la ruta actual en el símbolo del sistema en el sh de linux (no bash)?

Me gustaría mostrar la ruta actual en el símbolo del sistema (no en el bash), que actualmente sólo muestra “#”, lo intenté con la introducción de este

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

y

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

en /etc/profile.

Pero como es obvio, esto no se actualiza cuando se cambia el directorio o el usuario cambia. Por favor, sugiera una forma de hacer esto dinámico.

Respuestas (6)

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

Las sustituciones de comandos entre comillas " se amplían inmediatamente. Eso no es lo que quieres para tu prontuario. Las comillas simples ' preservarán las sustituciones en $PS1 que sólo se expandirán cuando se muestre el mensaje. Por lo tanto, esto debería funcionar:

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

Si quieres el habitual signo de dólar y un espacio al final del mensaje, simplemente añade $ al final (sin necesidad de escapar): 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

Este comando funciona para mí.

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

Donde \u = nombre de usuario \h = nombre de host \W Nombre de la carpeta actual (no la ruta completa)

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

Se podría considerar la posibilidad de alcahuetear el aviso añadiendo algunos colores. Por ejemplo:

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

Usa el siguiente comando para establecer es como en el panel.

export PS1=‘$(whoami)@${\Nnombredehostal%%.*} [$(pwd)]# ’

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

Una respuesta fue usar comillas simples en lugar de comillas dobles, sin embargo, esa no es la respuesta correcta completa. Lo que realmente quieres hacer es diferir la evaluación del código dentro de tu prompt hasta que el prompt sea usado.

set PS1="$(pwd)"

establece el prompt en el directorio de trabajo a partir del comando set.

set PS1="\$(pwd)"

NO expande $(pwd). En su lugar, PS1 se establece al valor literal de $(pwd).

Prueba / Comprende esto ejecutando:

echo $PS1

. Si ves la cadena : $pwd, tu prompt funciona. Si ves la ruta literal, el prompt se rompe porque se ha establecido estáticamente