Antwort1
Auch die Ästhetik hat mich gestört. Anstatt zu versuchen, hostname
etwas in Kleinbuchstaben zurückzugeben, habe ich einfach bash
die Anzeige der Eingabeaufforderung angegriffen. Ich habe editied .bashrc
(was spezifisch für die Installation von Windows ist und daher wahrscheinlich nicht auf einem anderen Computer wiederverwendet wird) bearbeitet, um Folgendes mit der Eingabeaufforderungsvariable zu tunPS1
# 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
Das Obige codiert den Namen der Maschine im Wesentlichen in Kleinbuchstaben, wenn sie mithilfe der Funktion PS1
erstellt wird , die die Zeichenfolge A in Kleinbuchstaben umwandelt. Dies ist zwar keine elegante Lösung des Problems, lässt die Shell jedoch wie eine normalere Linux-Shell aussehen!bash 4.0
$(A,,)
Antwort2
Bearbeiten:Dies wurde nun umgesetzt; die Groß- und Kleinschreibung, die Sie in den Systemeigenschaften festgelegt haben, bleibt nun erhalten.
Ich hatte das gleiche Problem. Es stellte sich heraus, dass Sie /etc/hostname nicht einfach in Bash unter Ubuntu unter Windows (BUW) ändern können, da /etc/hostname bei jedem Start generiert wird. BUW scheint den NetBIOS-Namen Ihres Computers zu verwenden, um /etc/hostname zu generieren, was lautDieser Artikel, wird „in Großbuchstaben dargestellt, wobei der Übersetzungsalgorithmus von Kleinbuchstaben in Großbuchstaben vom OEM-Zeichensatz abhängig ist.“ Wenn Sie Ihren Computer in Windows über Settings > System > About
oder umbenennen Control Panel > System and Security > System
, behält er die Groß- und Kleinschreibung bei, aber der NetBIOS-Name wird komplett in Großbuchstaben umgewandelt. Allerdings ist es möglich, den NetBIOS-Namen mithilfe der Windows-API-Funktion in Kleinbuchstaben zu ändern.SetComputerName
. Hier ist ein kleines C-Programm (Nicht-Unicode), das den NetBIOS-Namen als erstes Argument festlegt (erfordert Administratorrechte):
#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;
}
}
Verwenden Sie es auf eigenes Risiko, da ich nicht ganz sicher bin, ob ein NetBIOS-Name, der nicht aus Großbuchstaben besteht, nachteilige Auswirkungen hat (er könnte Dinge beschädigen, die auf DnsHostnameToComputerName angewiesen sind). Letztendlich bin ich mir nicht sicher, ob es beabsichtigt/notwendig ist, dass BUW den NetBIOS-Namen verwendet;Ich habe danach gefragtim Issue-Tracker der BUW.
Wenn Sie den NetBIOS-Namen nicht ändern möchten, können Sie alternativ eine Möglichkeit finden, den Hostnamen bei jedem Start von BUW zu ändern sudo hostname prophet-w10
(und exec bash
ihn dann in der Eingabeaufforderung anzuzeigen).