Revisar un script bash: invocar un cambio de color del mensaje a través de un archivo temporal

Revisar un script bash: invocar un cambio de color del mensaje a través de un archivo temporal

Me pregunto por qué el siguiente script no funciona:

#!/bin/bash
read -p 'First lets write PROMPT.SH'
echo '#!/bin/bash'>prompt.sh
echo "export PS1='\e[1;31m\]\u@\h \W\$\e[0m\] '">>prompt.sh
read -p "Change Title and Prompt"
source prompt.sh
echo texttexttext
read -p "Now lets tidy up PROMPT.SH"
rm ./prompt.sh
read -p "That was the program"

Lo que estoy tratando de hacer es cambiar el título de la ventana, el mensaje y el color del texto que normalmente puedo hacer.

PS1='\e[1;31m\]\u@\h \W\$\e[0m\] '

durante una sesión de bash normal, pero no cuando lo agrego a un script y luego ejecuto el script.

Respuesta1

PS1solo se muestra para indicaciones interactivas. No tiene nada que ver con el mensaje que se muestra para read -p. La ejecución de un script bash, incluso si se lee la entrada, no se considerainteractivo.

Respuesta2

No tengo muy claro lo que estás intentando hacer, pero supongo que es la configuración PS1para tu shell interactivo desde un script. Dicho así, no puedes hacerlo. En sistemas *nix y similares a Unix, las características/propiedades del proceso se pasan de padre a hijo, pero nunca al revés. Por ejemplo, si configura su PATHpara incluir /fooy luego ejecuta una secuencia de comandos que intenta ejecutarse bar, encontrará /foo/bar, pero si cambia PATHen una secuencia de comandos, no afecta su shell interactivo. Lo mismo para cdy umask. Estas son diferencias con el mundo del símbolo del sistema de Windows (por lotes).

Dicho esto, hay una respuesta y ya la sabes. Si su script (el de 10 líneas) se llama andy.sh, entonces debería poder obtener el efecto que desea escribiendo source andy.sh. Pero eso es una exageración tonta (a menos que lo hagas sólo para practicar la escritura de guiones); sólo hay que poner

PS1='\e[1;31m\]\u@\h \W\$\e[0m\] '

drew.shy escriba source drew.sh.

Pero también investiga el aliascomando.

información relacionada