Jak je to vlastně z češtinou v konzolových aplikacích?
Teď se mi třeba aktualizoval
cron, a jelikož průběh aktualizace pozorně sleduji, zaujala mě hláška
Setting up cron (3.0pl1-128.1ubuntu1.1) ...
Warning: juwa is not a regular file!
Warning: root is not a regular file!
Protože nevidím důvod, proč by zrovna moje dva
crontaby nebyly
"regular file", zapátral jsem v postinstalačním skriptu balíčku
cron a našel tam tohle
cd /var/spool/cron/crontabs
for tab_name in *; do
tab_type=$(stat -c '%F' "$tab_name")
if [ "$tab_type" != "regular file" ]
then
echo "Warning: $tab_name is not a regular file!"
else
continue
fi
Začíná přihořívat, zkusil jsem
tab_type=$(stat -c '%F' "/var/spool/cron/crontabs/juwa")
echo $tab_type
běžný soubor
Takže je to jasné - skript očekává výraz
"regular file" ale od aplikace
stat dostane český překlad
"běžný soubor" což nevyhoví podmínce a tím pádem hlásí chybu.
A nyní k otázce.
1. Proč aplikace
stat zobrazuje výstup příkazů v češtině (dokonce celý help je český, ale to zrovna ničemu nevadí)??
2. Co třeba v Indické verzi Ubuntu, tam je pak výstupem co (netuším jak se v hindštině napíše
"běžný soubor"), nějaký "rozsypaný čaj"?
Ty výstupy jsou přeci určeny nejenom k tomu aby je nějaký uživatel četl, ale také s nimi často pracují další aplikace, skripty, systém atd.
3. Lze to nějak nastavit/změnit?
Vždy jsem si myslel, že tenhle zmatek se týká jenom windowsů (tam např. pokud se cesta nezadá ve správném jazyce, tak neexistuje - ale neplatí to vždycky, někdy to kupodivu zase "zkousne" české i anglické zadání
stažené soubory/downloads
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EDIT: Po "menším" pátrání jsem zjistil, že problém výše se bohužel týká všech aplikací z balíku
coreutils, kterých je více jak stovka..
Jsou to všechny tyto běžné aplikace:
cat cp date dd df dir echo false chgrp chmod chown ln ls mkdir mknod mktemp mv pwd readlink rm rmdir sleep stty sync touch true uname vdir arch basename base32 base64 b2sum cksum comm csplit cut dircolors dirname du env expand expr factor fmt fold groups head hostid chcon id join link logname md5sum mkfifo nice nl nohup nproc numfmt od paste pathchk pinky pr printenv printf ptx realpath runcon seq sha1sum sha224sum sha256sum sha384sum sha512sum shred shuf sort split stat stdbuf sum tac tail tee test timeout tr truncate tsort tty unexpand uniq unlink users wc who whoami yes
Náprava je naštěstí docela snadnáNa konec souboru
~/.bashrc přidáme tyto dva řádky
unset LC_ALL
export LC_MESSAGES=C
A následně provedeme příkaz
source ~/.bashrc
Pro kontrolu si ještě můžeme zobrazit výstup příkazu
localeOd teď už budou výstupy všech těchto aplikací pouze v angličtině, tj. nebudou komoleny nesmyslnými českými překlady, veškeré okolní prostředí jim bude "rozumět".
A změna je trvalá, není omezena na session v jednom terminálu.