Respuesta1
La estética de esto también me molestó. En lugar de intentar hostname
devolver algo en minúscula, simplemente ataqué cómo bash
se muestra el mensaje. Edité .bashrc
(que es específico de la instalación de Windows y, por lo tanto, es poco probable que se reutilice en una computadora diferente) para hacer lo siguiente en la variable de solicitudPS1
# Annoyingly the windows hostname is UPPERCASE which really doesn't look
# good on linux. So for this machine I'm going to grab the hostname and
# hardcode it into the prompt
HN=`hostname`
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@${HN,,}\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@${HN,,}:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@${HN,,}: \w\a\]$PS1"
;;
*)
;;
esac
Lo anterior esencialmente codifica el nombre en minúsculas de la máquina PS1
cuando se crea usando la bash 4.0
función que $(A,,)
convierte la cadena A a minúsculas. Aunque no es una solución elegante al problema, ¡hace que el shell parezca un shell de Linux más normal!
Respuesta2
Editar:Esto ya se ha implementado; Ahora se conservarán las mayúsculas que configuró en las propiedades del sistema.
Estaba teniendo el mismo problema. Resulta que no puedes simplemente cambiar /etc/hostname desde Bash en Ubuntu en Windows (BUW) porque /etc/hostname se genera cada vez que lo inicias. BUW parece utilizar el nombre NetBIOS de su computadora para generar /etc/hostname que, segúnEste artículo, está "representado en mayúsculas, donde el algoritmo de traducción de minúsculas a mayúsculas depende del juego de caracteres OEM". Cuando cambia el nombre de su computadora en Windows a través de Settings > System > About
o Control Panel > System and Security > System
, conserva las mayúsculas que le dio, pero el nombre NetBIOS se convierte a mayúsculas. Dicho esto, es posible cambiar el nombre NetBIOS para que esté en minúsculas, utilizando la función API de Windows.SetComputerName
. Aquí hay un pequeño programa en C (no unicode) que establece el nombre NetBIOS en su primer argumento (requiere privilegios de administrador):
#define _WIN32_WINNT 0x0500
#include <sdkddkver.h>
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include <stdio.h>
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "Usage: %s <New NetBIOS name>\n", argv[0]);
return 1;
}
if (SetComputerNameA(argv[1]) == 0) {
LPSTR error_message = NULL;
DWORD error_code = GetLastError();
FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
error_code,
0,
(LPSTR)&error_message,
0,
NULL
);
fprintf(stderr, "SetComputerNameA error (%lu)", error_code);
if (error_message != NULL) {
fprintf(stderr, ": %s", error_message);
LocalFree(error_message);
}
fprintf(stderr, "\n");
return 2;
}
else {
printf("NetBIOS name set to \"%s\"\n", argv[1]);
return 0;
}
}
Úselo bajo su propio riesgo, ya que no estoy completamente seguro de si tener un nombre NetBIOS que no esté en mayúsculas tenga algún efecto adverso (podría romper cosas que dependen de DnsHostnameToComputerName). En última instancia, no estoy seguro de si es intencional/necesario que BUW use el nombre NetBIOS;pregunté sobre esoen el rastreador de problemas de BUW.
Alternativamente, si no desea cambiar el nombre de NetBIOS, puede idear alguna forma de cambiar el nombre de host cada vez que se inicia el uso de BUW sudo hostname prophet-w10
(y luego exec bash
hacer que aparezca en el mensaje).