Responder1
A estética disso também me incomodou. Em vez de tentar retornar hostname
algo em minúsculas, simplesmente ataquei a forma como bash
o prompt era exibido. Eu editei .bashrc
(que é específico para a instalação do Windows e, portanto, é improvável que seja reutilizado em um computador diferente) para fazer o seguinte na variável promptPS1
# 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
O texto acima basicamente codifica o nome da máquina em minúsculas PS1
quando ela é criada usando o bash 4.0
recurso que $(A,,)
converte a string A em minúsculas. Embora não seja uma solução elegante para o problema, isso faz com que o shell pareça um shell Linux mais normal!
Responder2
Editar:Isto já foi implementado; a capitalização definida nas propriedades do sistema agora será preservada.
Eu estava tendo o mesmo problema. Acontece que você não pode simplesmente alterar /etc/hostname no Bash no Ubuntu no Windows (BUW) porque /etc/hostname é gerado toda vez que você o inicia. BUW parece usar o nome NetBIOS do seu computador para gerar /etc/hostname que, de acordo comEste artigo, é "representado em letras maiúsculas, onde o algoritmo de tradução de letras minúsculas para maiúsculas depende do conjunto de caracteres OEM." Quando você renomeia seu computador no Windows por meio de Settings > System > About
ou Control Panel > System and Security > System
, ele mantém as letras maiúsculas fornecidas, mas o nome NetBIOS é convertido para letras maiúsculas. Dito isto, é possível alterar o nome NetBIOS para letras minúsculas, usando a função API do WindowsSetComputerName
. Aqui está um pequeno programa em C (não Unicode) que define o nome NetBIOS para seu primeiro argumento (requer privilégios 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;
}
}
Use-o por sua conta e risco, pois não tenho certeza se ter um nome NetBIOS sem letras maiúsculas tem algum efeito adverso (pode quebrar coisas que dependem de DnsHostnameToComputerName). Em última análise, não tenho certeza se é intencional/necessário que o BUW use o nome NetBIOS;Eu perguntei sobre issono rastreador de problemas do BUW.
Alternativamente, se você não quiser alterar o nome NetBIOS, você pode encontrar uma maneira de alterar o nome do host toda vez que o BUW for iniciado sudo hostname prophet-w10
(e então exec bash
fazê-lo aparecer no prompt).