Me gustaría mostrar la ruta actual en sh prompt (no bash shell), que actualmente solo muestra "#", traté de presentar esto
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. Sugiera una forma de hacer esta dinámica.
$()
ejecuta un programa separado; sería más rápido usar variables de entorno, como$LOGNAME
,$HOSTNAME
y en su$PWD
lugar.Respuestas:
Las sustituciones de comandos entre comillas dobles
"
se expanden inmediatamente. Eso no es lo que quieres para tu solicitud. Las comillas simples'
conservarán las sustituciones en las$PS1
que luego solo se expandirán al mostrar la solicitud. Por lo tanto, esto debería funcionar:Si desea el signo de dólar habitual y un espacio al final de su solicitud, simplemente agregue
$
al final (no es necesario escapar):export PS1='$(whoami)@$(hostname):$(pwd)$ '
fuente
export PS1='$(whoami)@$(hostname):$(pwd)$'
, guardé los cambios en/etc/profile
. Gracias.set
funcionó para mí (pero no tenía un nativosh
). Pero lo cambiaréexport
para cumplir con su configuración./etc/profile
(ver pregunta) o~/.profile
?!foo@localhost:/home/fools -la
cuando lo usasls -la
.fuente
\u@\h:\w>
BusyBox v1.19.4 built-in shell (ash)
.Este comando me funciona.
Donde
\ u = nombre de usuario
\ h = nombre de host
\ W Nombre de la carpeta actual (ruta no completa)
fuente
Se podría considerar aumentar el indicador agregando algunos colores. Por ejemplo:
fuente
Una respuesta fue usar comillas simples en lugar de comillas dobles, sin embargo, esa no es la respuesta correcta completa. Lo que realmente quiere hacer es diferir la evaluación del código dentro de su solicitud hasta que se use la solicitud.
establece el indicador en el directorio de trabajo a partir del comando set.
NO expande $ (pwd). En cambio, PS1 se establece en el valor literal de $ (pwd).
Pruebe / Comprenda esto ejecutando:
. Si ve la cadena: $ pwd, su solicitud funciona. Si ve la ruta literal, la solicitud se interrumpe porque se ha establecido estáticamente
fuente
Use el siguiente comando para configurarlo como en el panel de control.
export PS1='$(whoami)@${HOSTNAME%%.*} [$ (pwd)] # '
fuente