Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Software
>
Umlaute in der bash
Umlaute in der bash
Kirsel
13.01.06
10:03
1. Terminal => Fenstereinstellungen:
xterm-color
Zeichenkodierung auf utf-8
2. .bash_login:
export LANG="de_DE.UTF-8"
export LC_ALL="de_DE.UTF-8"
3. .inputrc
set meta-flag On
set Input-meta On
set convert-meta Off
set output-meta On
set show-all-if-ambiguous On
Umlaute werden bei der Eingabe korrekt angezeigt. Ein "ls -w" die Umlaute auch richtig an.
Nun zum Problem: Gebe ich in der Bash z.B. "üüü" ein und möchte sie anschließend löschen, dann muss ich 6mal die Löschtaste drücken. Umlaute bzw. Zeichen mit Umlaut wird durch 2 Byte repräsentiert.
Wenn ich nun aus der Bash heraus eine neue Bash starte, dann werden die Umlaute richtig gelöscht. Irgendwie scheint das LANG zuspät gesetzt zu werden. EIn export LANG="..." in /etc/profile bringt auch nichts.
Hilfreich?
0
Kommentare
Eszett
13.01.06
10:30
Ich hab's irgendwie hingekriegt, daß es fast überall geht, nur nicht im von mir heißgeliebten vi. Wenn ich mich recht erinnere, kann man einige Einstellungen schon vorher machen, vor dem Anmelden des Benutzers. Dazu muß man im "home" einen neuen Ordner erstellen, der heißt ".macosx" oder so ähnlich, da hinein kann man ein Skript tun oder eine plist, das weiß ich nicht mehr, die das Environment modifiziert und das dann auch an alle gestarteten Programme vererbt. Wenn ich mich recht erinnere, gibt es da Tips auf "macosxhints.com".
Wenn Du's nicht rauskriegst oder Dir sonst niemand helfen kann, kann ich (erst) nächste Woche mal nachschauen. Aber perfekt ist's halt auch nicht.
Man kann übrigens auch die "Entf"-Taste so belegen, daß sie das tut, was sie soll, also das rechts davon stehende Zeichen entfernt.
Hilfreich?
0
Kirsel
13.01.06
11:14
Eszett
Wäre nett. Und das mit der "Entf"-Taste würde mich auch reizen
Hilfreich?
0
MacMark
13.01.06
11:48
Bei mir klappt das und zwar so:
~/.inputrc
set meta-flag on
set convert-meta off
set output-meta on
set completion-ignore-case on
set show-all-if-ambiguous on
~/.bash_profile
# Invoked for bash as a normal interactive login shell
# like invocation by new Terminal.app session.
# Environment variables (like search PATH) are
# passed to sub-shells form here.
# Source .bashrc.
. .bashrc
# Show umlaut characters correctly and use color for file types.
alias ls='ls -vwG'
# Converts Mac linebreaks to Unix
alias m2u="tr '\015' '\012'"
# Converts Unix linebreaks to Mac
alias u2m="tr '\012' '\015'"
~/.bashrc
# Invoked for bash as non-login- and non-interactive shell like by typing
# 'bash' for a new sub-shell or for shell scripts.
# I put environment variables here, because I want shell scripts to know them.
# Interactive login-shells know them too, because .bash_profile sources this
# .bashrc file.
LC_ALL=en_US.UTF-8
export LC_ALL
LANG=en_US.UTF-8
export LANG
# letting Fink adding to path
test -r /sw/bin/init.sh && . /sw/bin/init.sh
# set my path
PATH=/usr/local/bin:/usr/local/sbin:/Developer/Tools:/usr/libexec:/usr/local/mysql/bin:$PATH
PATH=/usr/bin:$PATH
PATH=/usr/local/php5/bin:$PATH
PATH=.:$PATH
export PATH
MANPATH=/usr/local/php5/man:$MANPATH
MANPATH=/usr/share/man:/usr/bin/man:/usr/local/man:/usr/local/share/man:$MANPATH
MANPATH=/usr/X11R6/man:/usr/man:$MANPATH
export MANPATH
„@macmark_de“
Hilfreich?
0
Kirsel
13.01.06
12:09
MacMark
Sicher? Bei mir geht es nicht. Meine sehen so aus:
~/.inputrc
set meta-flag on
set input-meta on
set output-meta on
set convert-meta off
set completion-ignore-case on
set show-all-if-ambiguous On
~/.bash_profile
## Invoke Fink Script
#####################
test -r /sw/bin/init.sh && . /sw/bin/init.sh
## Set Path
###########
PATH=$HOME/bin:$PATH
PATH=$HOME/RWTH/Dissertation/Development/ns-2.29:$HOME/RWTH/Dissertation/Development/ns-libs/bin:$PATH
## Invoke .bashrc
#################
. .bashrc
~/.bashrc
## Set Alias
############
alias l='ls -alvwFG'
alias ll='ls -lvwG'
alias l.='ls -dvwG .*'
alias ll.='ls -dlvwG .*'
alias ls='ls -vwG'
alias startx='open -a X11'
alias cd..='cd ..'
alias ..='cd ..'
## Set Locale
#############
export LANG="de_DE.UTF-8"
export LC_ALL="de_DE.UTF-8"
## Display
##########
# If we're NOT ssh'd in
if [ ! ${SSH_TTY} ]; then
# If DISPLAY isn't set
if [ x${DISPLAY} = x ]; then
export DISPLAY=:0.0
fi
fi
Starte mal aus der bash eine neue bash, dann hast du (imho) das Problem, dass
1. Dein PATH wird erneut erweitert.
2. Deine ALIASE sind nicht mehr gesetzt.
Da der PATH vererbt wird und die ALIASE nicht, würde ich den PATH in die .bash_profile schreiben und die ALIASE in die .bashrc.
Nichts desto trotz klappt das mit den Umlauten, also das löschen nicht das Anzeigen, immer noch nicht.
Hilfreich?
0
kai!
13.01.06
12:42
MacMark
Bei mir klappt das und zwar so:
(...)
Das stimmt, so funktioniert es. Das Problem ist allerdings, dass Befehle, in dem man aufgrund eines Tippfehlers einen Umlaut eingegeben und anschließend wieder gelöscht hat, ungültig werden. Beispiel:
echo(ü) $PATH
Das "ü" wird vor Absetzen des Befehl wieder gelöscht, da es ein Tippfehler ist
-bash: echo?: command not found
Ergebnis: Die Bash wandelt das gelöschte "ü" in ein Fragezeichen um, anstatt es komplett aus dem Befehl zu löschen.
Kirsel
Starte mal aus der bash eine neue bash, dann hast du (imho) das Problem, dass
1. Dein PATH wird erneut erweitert.
2. Deine ALIASE sind nicht mehr gesetzt.
Da der PATH vererbt wird und die ALIASE nicht, würde ich den PATH in die .bash_profile schreiben und die ALIASE in die .bashrc.
Das stimmt auch, und lässt sich durch Umtauschen beheben, wie du sagst.
Das mit dem Löschen sieht nach einem Bug in der Bash aus!
Hilfreich?
0
Kirsel
13.01.06
12:55
kai!
Das mit dem Löschen sieht nach einem Bug in der Bash aus!
Das gaube ich eben nicht. Für mich wird das LANG zuspät gesetzt.
Starte mal eine bash in der bash dann klappt das mit dem löschen der Umlaute.
BTW: Lösche mal die .inputrc. Dann werden bei der Eingabe die Umlaute nicht mehr korrekt angezeigt. Startet man dann wieder eine bash in der bash geht beides. Eingabe und Löschen.
Bei starten der zweiten bash wird LANG gelesen und alles ist gut. Das Problem der ersten bash ist halt, dass sie selbst das LANG setzt und nicht liest.
Hilfreich?
0
MacMark
13.01.06
13:02
Ich sollte PATH und MANPATH und Aliase tatsächlich besser die ~/.bash_profile und alle Aliase in die ~/.bashrc schreiben. Danke für den Hinweise.
„@macmark_de“
Hilfreich?
0
MacMark
13.01.06
13:03
Ich sollte PATH und MANPATH tatsächlich besser in die ~/.bash_profile und alle Aliase in die ~/.bashrc schreiben. Danke für den Hinweise.
„@macmark_de“
Hilfreich?
0
MacMark
13.01.06
13:27
Kirsel
Hast Du unter
Terminal - Window-Settings - Display
Unicode UTF-8 eingestellt?
Alles bzgl. glyphs angehakt?
Hast Du unter
Terminal - Save As
Deine Fenstereinstellung fürs Terminal als xyz.term gesichert?
Terminal - Preferences
"Open a saved .term file when Terminal starts" angehakt und Dein xyz.term-File ausgewählt?
Nach allen Änderungen Terminal.app geschlossen und neu aufgemacht?
„@macmark_de“
Hilfreich?
0
Kirsel
13.01.06
15:39
MacMark
Kirsel
Hast Du unter
Terminal - Window-Settings - Display
Unicode UTF-8 eingestellt?
Alles bzgl. glyphs angehakt?
Hast Du unter
Terminal - Save As
Deine Fenstereinstellung fürs Terminal als xyz.term gesichert?
Terminal - Preferences
"Open a saved .term file when Terminal starts" angehakt und Dein xyz.term-File ausgewählt?
Nach allen Änderungen Terminal.app geschlossen und neu aufgemacht?
Hab ich alles gemacht!
nix!
Hilfreich?
0
Kirsel
13.01.06
16:35
So ich ab es!!!
~/.inputrc
Die kann man sich schenken!
~/.bash_profile
## Invoke Fink Script
#####################
test -r /sw/bin/init.sh && . /sw/bin/init.sh
## Set Path
###########
PATH=$HOME/bin:$PATH
PATH=$HOME/RWTH/Dissertation/Development/ns-2.29:$HOME/RWTH/Dissertation/Development/ns-libs/bin:$PATH
## Display
##########
# If we're NOT ssh'd in
if [ ! ${SSH_TTY} ]; then
# If DISPLAY isn't set
if [ x${DISPLAY} = x ]; then
export DISPLAY=:0.0
fi
fi
## Invoke .bashrc
#################
. .bashrc
~/.bashrc
## Set Alias
############
alias l='ls -alvwFG'
alias ll='ls -lvwG'
alias l.='ls -dvwG .*'
alias ll.='ls -dlvwG .*'
alias ls='ls -vwG'
alias startx='open -a X11'
alias cd..='cd ..'
alias ..='cd ..'
~/.MacOSX/environment.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>LANG</key>
<string>de_DE.UTF-8</string>
<key>LC_ALL</key>
<string>de_DE.UTF-8</string>
</dict>
</plist>
Ein mal aus und einloggen und schon geht alles!
Was jetzt nur noch fehlt ist die "Entf"-Taste!
Hilfreich?
0
Kirsel
13.01.06
16:37
Die zweite Zeile unter "~/.MacOSX/environment.plist" ist
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "httpp://www.apple.com/DTDs/PropertyList-1.0.dtd">
mit http anstatt httpp
Hilfreich?
0
Kirsel
13.01.06
18:03
Und die Entf-Taste
Fenstereinstellungen=>Tastatur
Unter Entf. (Vorwärts) \004 eintragen
Als Standard speichern und fertig
Hilfreich?
0
kai!
13.01.06
20:45
Dann kann man sich die .bash_profile und die .bashrc aber auch schenken, oder? Da steht ja nichts umlautspezifisches drin.
Die einzige Änderung, die du hier gepostet hast, ist also die environment.plist, oder?
Leider funktionieren bei mir jetzt keinerlei Umlaute mehr
Es wird nur noch die Zahl angezeigt (z. B. \303\274 für "ü").
Hilfreich?
0
kai!
13.01.06
21:00
Ach okay, man muss aus der .bashrc die LANG-Variable entfernen.
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.