skript "sun" statt "so", "mon" statt "mo", ...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
egerlach
Beiträge: 206
Registriert: 13.06.2009 17:21:50

skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von egerlach » 15.06.2020 00:11:33

Hallo,
in ubuntu kann ich mit export LANG=C oder LANG=en_US.UTF-8 in dem Skript die Sprache umstellen und erhalte bei

Code: Alles auswählen

gomm@edge3:~$ export LANG=en_US.UTF-8
gomm@edge3:~$ date
Sun Jun 14 23:50:57 CEST 2020
statt "So" für Sonntag als Ausgabe, auch in einem Terminal funktioniert das. In debian funktioniert das nicht, gibt es da eine andere Möglichkeit nur in einem Skript die Ausgabe auf englisch zustellen?

danke schon mal
Eckard

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von smutbert » 15.06.2020 00:27:46

Also bei mir funktioniert das

Code: Alles auswählen

$ LANG=de_AT.UTF-8 date -d 'next sunday'
So Jun 21 00:00:00 CEST 2020
$ LANG=C date -d 'next sunday'
Sun Jun 21 00:00:00 CEST 2020
Hast du vielleicht die fraglichen locales gar nicht erstellt (dpkg-reconfigure locales)?

egerlach
Beiträge: 206
Registriert: 13.06.2009 17:21:50

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von egerlach » 15.06.2020 00:37:54

aha .... 8O ... ich arbeite mit rasbian10, Buster , ist das vielleicht dort anders?

Ich wusste das nicht mit dem dpkg-reconfigure locales , dass man damit mehrere Sprachen konfigurieren kann. Habe das für en_US nachgeholt, es war nur de_DE. Trotzdem funktioniert es weiterhin nicht, date spuck weiterhin "Mo" aus. Habe mich auch neu eingeloggt, hilft nicht.

Huo
Beiträge: 778
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von Huo » 15.06.2020 08:05:03

"date" richtet sich bei mir nach der Locale LC_TIME

Code: Alles auswählen

$ LC_TIME=de_DE.UTF-8 date
Mo 15. Jun 08:00:13 CEST 2020
$ LC_TIME=en_US.UTF-8 date
Mon 15 Jun 2020 08:00:24 AM CEST

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von smutbert » 15.06.2020 11:14:56

welche Umgebungsvariablen hast du denn alle gesetzt?

Code: Alles auswählen

set | grep -e LC_ -e LANG

egerlach
Beiträge: 206
Registriert: 13.06.2009 17:21:50

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von egerlach » 15.06.2020 22:43:06

Es scheint debian und rasbian wirklich unterschiedlich zu sein! Ich bekomme kein "mon", nur deutsch: "mo"!!
Habe auch schon ein "dpkg-reconfigure locales" gemacht, habe jetzt "de_DE.UTF8" und "en_US.UTF8"

Code: Alles auswählen

root@archivpi:~# date
Mo 15. Jun 22:37:33 CEST 2020
root@archivpi:~# LC_TIME=en_US.UTF-8 date
Mo 15. Jun 22:37:36 CEST 2020
root@archivpi:~# export LC_TIME=en_US.UTF-8 
root@archivpi:~# date
Mo 15. Jun 22:41:37 CEST 2020
gleiches bei einem User anstelle root.

Code: Alles auswählen

root@archivpi:~# set | grep -e LC_ -e LANG
LANG=de_DE.UTF-8
LANGUAGE=de_DE.UTF-8
LC_ALL=de_DE.UTF-8
    local LC_CTYPE=C;
    COMPREPLY+=($( compgen -W         "$( { LC_ALL=C ifconfig -a || ip addr show; } 2>/dev/null | command sed -ne             's/.*addr:\([^[:space:]]*\).*/\1/p' -ne             's|.*inet[[:space:]]\{1,\}\([^[:space:]/]*\).*|\1|p' )"         -- "$cur" ))
            local argtype=$( LC_ALL=C $1 --help 2>&1 | command sed -ne                 "s|.*$prev\[\{0,1\}=[<[]\{0,1\}\([-A-Za-z0-9_]\{1,\}\).*|\1|p" );
        COMPREPLY=($( compgen -W "$( LC_ALL=C $1 --help 2>&1 |             command sed -ne 's/.*\(--[-A-Za-z0-9]\{1,\}=\{0,1\}\).*/\1/p' | sort -u )"             -- "$cur" ));
    COMPREPLY+=($(         { LC_ALL=C ifconfig -a || ip link show; } 2>/dev/null | command sed -ne         "s/.*[[:space:]]HWaddr[[:space:]]\{1,\}\($re\)[[:space:]].*/\1/p" -ne         "s/.*[[:space:]]HWaddr[[:space:]]\{1,\}\($re\)[[:space:]]*$/\1/p" -ne         "s|.*[[:space:]]\(link/\)\{0,1\}ether[[:space:]]\{1,\}\($re\)[[:space:]].*|\2|p" -ne         "s|.*[[:space:]]\(link/\)\{0,1\}ether[[:space:]]\{1,\}\($re\)[[:space:]]*$|\2|p"
                LC_ALL=C "$( dequote "$cmd" )" ${2:---help} 2>&1
                LC_ALL=C "$( dequote "$cmd" )" ${2:---usage} 2>&1
root@archivpi:~# cat /etc/debian_version 
10.2

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von smutbert » 15.06.2020 23:12:35

auch wenn du LC_ALL entsprechend setzt?
und ich würde es mit LC_ALL=C ausprobieren. (Ich glaube LC_ALL soll alle anderen Variablen „überstimmen“.)

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von Meillo » 15.06.2020 23:14:10

Was sagt `locale -a'?
Use ed once in a while!

tobo
Beiträge: 2336
Registriert: 10.12.2008 10:51:41

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von tobo » 15.06.2020 23:51:29

LC_CTYPE zusätzlich sollte ausreichen:

Code: Alles auswählen

LC_TIME="en_US.UTF-8" LC_CTYPE="en_US.UTF-8" date

egerlach
Beiträge: 206
Registriert: 13.06.2009 17:21:50

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von egerlach » 16.06.2020 00:02:36

Mit LC_ALL gehts! Danke! :)

Die Ausgabe von locale -a mit reingenommen:

Code: Alles auswählen

root@archivpi:~# locale -a
C
C.UTF-8
de_DE.utf8
en_US.utf8
POSIX
root@archivpi:~# date
Mo 15. Jun 23:59:38 CEST 2020
root@archivpi:~# export LC_ALL=en_US.UTF-8
root@archivpi:~# date
Tue 16 Jun 2020 12:01:30 AM CEST
root@archivpi:~# locale -a
C
C.UTF-8
de_DE.utf8
en_US.utf8
POSIX

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von Meillo » 16.06.2020 00:26:30

Eigentlich sollte LC_TIME ausreichen, zumindest laut POSIX: https://pubs.opengroup.org/onlinepubs/9 ... g_20_30_08

Es waere nun doch interessant herauszufinden an welcher der LC_-Variablen es nun gelegen hat, die LC_ALL alle ueberschreibt. Koenntest du sie mal durchprobieren?
Use ed once in a while!

egerlach
Beiträge: 206
Registriert: 13.06.2009 17:21:50

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von egerlach » 16.06.2020 10:05:44

Meillo hat geschrieben: ↑ zum Beitrag ↑
16.06.2020 00:26:30
Koenntest du sie mal durchprobieren?
Wenn Du sie mir alle nennst? - Ich vermute einen Fehler in rasbian, der irgendwann sowieso behoben ist.

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von Meillo » 16.06.2020 10:37:20

egerlach hat geschrieben: ↑ zum Beitrag ↑
16.06.2020 10:05:44
Meillo hat geschrieben: ↑ zum Beitrag ↑
16.06.2020 00:26:30
Koenntest du sie mal durchprobieren?
Wenn Du sie mir alle nennst?
Der Befehl `locale' listet sie auf.


Verwende z.B. so ein Script und tausche dann einzelne ``$en'' gegen ``$de'' aus.

Code: Alles auswählen

#!/bin/sh

en=en_US.UTF-8
de=de_DE.UTF-8

export LANG="$en"
export LANGUAGE="$en"
export LC_CTYPE="$en"
export LC_NUMERIC="$en"
export LC_TIME="$en"
export LC_COLLATE="$en"
export LC_MONETARY="$en"
export LC_MESSAGES="$en"
export LC_PAPER="$en"
export LC_NAME="$en"
export LC_ADDRESS="$en"
export LC_TELEPHONE="$en"
export LC_MEASUREMENT="$en"
export LC_IDENTIFICATION="$en"
export LC_ALL=

date
Use ed once in a while!

egerlach
Beiträge: 206
Registriert: 13.06.2009 17:21:50

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von egerlach » 16.06.2020 14:33:23

Code: Alles auswählen

#!/bin/sh                                                                                                                                                                     

en=en_US.UTF-8
de=de_DE.UTF-8

export LANG="$en" ;date
export LANGUAGE="$en" ;date
export LC_CTYPE="$en" ;date
export LC_NUMERIC="$en" ;date
export LC_TIME="$en" ;date
export LC_COLLATE="$en" ;date
export LC_MONETARY="$en" ;date
export LC_MESSAGES="$en" ;date
export LC_PAPER="$en" ;date
export LC_NAME="$en" ;date
export LC_ADDRESS="$en" ;date
export LC_TELEPHONE="$en" ;date
export LC_MEASUREMENT="$en" ;date
export LC_IDENTIFICATION="$en" ;date
export LC_ALL=

date

Code: Alles auswählen

root@scannerpi:~# bash test_LC.sh
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Di 16. Jun 14:31:21 CEST 2020
Tue Jun 16 14:31:21 CEST 2020
root@scannerpi:~# date
Di 16. Jun 14:32:42 CEST 2020
nur nach dem export LC_ALL= (ohne Wert!) wird Tue ausgegeben!!
Ergebnis: nur LC_ALL hat Einfluss.

Benutzeravatar
Meillo
Moderator
Beiträge: 9225
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von Meillo » 16.06.2020 14:44:36

Bei mir:

Code: Alles auswählen

:-Q locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

:-Q date                     
Tue Jun 16 14:42:40 CEST 2020

:-Q LC_TIME=de_DE.UTF-8 date 
Di 16. Jun 14:42:42 CEST 2020
... tut alles wie es soll.


Poste mal `date --version'.
Use ed once in a while!

egerlach
Beiträge: 206
Registriert: 13.06.2009 17:21:50

Re: skript "sun" statt "so", "mon" statt "mo", ...

Beitrag von egerlach » 16.06.2020 22:11:07

Code: Alles auswählen

root@archivpi:~# date --version
date (GNU coreutils) 8.30
Copyright © 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Geschrieben von David MacKenzie.

root@archivpi:~# cat /etc/debian_version 
10.2
rasbian für raspberry ist installiert, nicht Debian für PC!

Antworten