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

Kirsel13.01.0610: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.
0

Kommentare

Eszett
Eszett13.01.0610: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.
0
Kirsel13.01.0611:14
Eszett
Wäre nett. Und das mit der "Entf"-Taste würde mich auch reizen
0
MacMark
MacMark13.01.0611: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“
0
Kirsel13.01.0612: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.
0
kai!
kai!13.01.0612: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!
0
Kirsel13.01.0612: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.

0
MacMark
MacMark13.01.0613: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“
0
MacMark
MacMark13.01.0613: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“
0
MacMark
MacMark13.01.0613: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“
0
Kirsel13.01.0615: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!
0
Kirsel13.01.0616: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!
0
Kirsel13.01.0616: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
0
Kirsel13.01.0618:03
Und die Entf-Taste

Fenstereinstellungen=>Tastatur

Unter Entf. (Vorwärts) \004 eintragen

Als Standard speichern und fertig
0
kai!
kai!13.01.0620: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 "ü").
0
kai!
kai!13.01.0621:00
Ach okay, man muss aus der .bashrc die LANG-Variable entfernen.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.