Dove viene impostata la variabile $ LANG in Mac OS X?

23

Ho usato wget per la prima volta dopo aver installato Lion OS X e ho notato che wget è stato localizzato nella mia lingua nativa. L'esecuzione del comando set nel terminale ha mostrato che la mia variabile LANG rappresenta la mia lingua locale. Dove posso cambiarlo o fare in modo che% co_de ignori questa impostazione?

update

Ecco cosa mi offre wget :

LANG="lt_LT.UTF-8"
LC_COLLATE="lt_LT.UTF-8"
LC_CTYPE="lt_LT.UTF-8"
LC_MESSAGES="lt_LT.UTF-8"
LC_MONETARY="lt_LT.UTF-8"
LC_NUMERIC="lt_LT.UTF-8"
LC_TIME="lt_LT.UTF-8"
LC_ALL=

Quindi tutti i risultati di non parametri (come prompt e messaggi di debug) sono in lituano. Questo è il mio problema Mi piacerebbe tornare in inglese.

Sto utilizzando locale come shell di accesso.

    
posta Eimantas 09.08.2011 - 14:01
fonte

6 risposte

24

Per impostazione predefinita, Terminal imposta le variabili di ambiente locale in modo che corrispondano alla lingua attualmente selezionata e ai formati di ora / data / numero utilizzati da Terminal, che viene selezionato tramite

System Preferences > Language and Text

(Questo è il nome su Lion. Sui sistemi precedenti il nome esatto del pannello delle preferenze può variare.)

Una soluzione temporanea è trascinare l'inglese in cima all'elenco delle lingue, quindi aprire Terminal, quindi spostare il lituano in alto. Quindi solo Terminal sarà in inglese. Tuttavia, si ripristinerà in lituano se si chiude e si riavvia il terminale.

Un approccio persistente è quello di dire a Terminal di non impostare le variabili di ambiente locale, disattivando

Terminal > Preferences > Settings > [profile] > Advanced > Set locale environment variables on startup

Quindi le impostazioni internazionali verranno impostate su "C" con nessuna lingua specificata, e la maggior parte dei programmi sarà quindi predefinita in inglese.

Si noti che disattivarlo significa che alcuni programmi non saranno a conoscenza di quale terminale di codifica dei caratteri sta usando e assumeranno che sia solo ASCII o ISO-Latin-1. Pertanto, se Terminal utilizza UTF-8 (impostazione predefinita), tali programmi potrebbero o meno comportarsi come desiderato.

Se si tratta principalmente di wget , ti consiglio di creare una copia del profilo delle impostazioni di default, disattivare le impostazioni locali nel tuo profilo personalizzato e utilizzare quel profilo solo quando usi wget , in modo che tu possa continua a utilizzare UTF-8 con supporto completo quando si utilizzano altri programmi, utilizzando le impostazioni predefinite.

Come altri hanno già menzionato, è possibile anche sovrascrivere le impostazioni locali iniziali fornite da Terminal in uno script di avvio della shell. Per zsh, mettilo in ~ / .zshrc. Per bash, usa ~ / .bashrc (e se non ne hai già uno, crea un ~ / .bash_profile che esegue ~ / .bashrc).

Vedi x-man-page: // 1 / locale per ulteriori informazioni su ciascuno dei valori dell'ambiente locale.

Tuttavia, se dovessi semplicemente unset LANG o lo impostassi su "C", ciò si applicherebbe normalmente a all delle tue shell e programmi, mentre la maggior parte delle volte tu vorresti usare UTF-8 e Terminal hanno impostato le variabili locali corrispondenti, per ottenere il massimo grado di collaborazione, fedeltà e funzionalità.

Pertanto, se hai intenzione di seguire questa strada, ti suggerisco di scrivere codice per modificare, piuttosto che sostituire, i valori iniziali, in modo da conservare le informazioni di codifica ("UTF-8") e forzare semplicemente la lingua in inglese, piuttosto che impostare le variabili su "C".

Ad esempio, questo funziona in zsh e bash:

# Replace Lithuanian with English
export LANG=${LANG/lt_LT/en_US}

Quando LANG="lt_LT.UTF-8" , questo cambierà in LANG="en_US.UTF-8" . Non ho disponibile wget per testarlo, ma questo dovrebbe essere sufficiente.

Operare in questo modo significa che se cambi la preferenza di codifica dei caratteri in Terminale, non lo sovrascrivere nello script di avvio della shell.

    
risposta data 26.08.2011 - 06:27
fonte
7

È impostato qui ...

Se desideri più o meno opzioni nel pulldown, vai alla scheda Codifiche per visualizzare ancora più bounty.

    
risposta data 09.08.2011 - 16:05
fonte
2

Ho risolto questo problema impostando la lingua nel mio file .profile che viene caricato ogni volta che avvio un terminale.

export LANG="en_US.UTF-8"
export LC_ALL="POSIX"
    
risposta data 15.02.2013 - 15:47
fonte
1

Basandoti maggiormente sull'esperienza di Linux, se non vuoi cambiare completamente la tua localizzazione con LC_LANG, ma vorresti solo avere i messaggi di sistema in inglese, devi solo impostare

LC_COLLATE=C    (to have standard sorting in ls, etc)
LC_CTYPE=en_US.UTF-8
    
risposta data 12.02.2012 - 21:20
fonte
0

Usando un server debian in francese e un client bash macsox, ho "solo" dovuto aggiungere questo al mio .bash_profile nella directory utente di macosx:

export LANG=fr_FR.UTF-8

risolto.

    
risposta data 26.09.2014 - 09:28
fonte
0

Le altre risposte sono corrette, ad esempio l'impostazione Terminal per imposta le variabili di ambiente locale all'avvio e utilizza /etc/profile della shell. Tuttavia, c'è un altro modo che vale la pena comprendere, specialmente se si verifica il "problema" a causa di un accesso di ssh remoto.

OpenSSH (come usato su Linux, BSD e macOS) può inviare variabili di ambiente dall'ambiente del client alla shell avviata dal server. Lo fa solo se il client è configurato per inviarli e il server è configurato per accettarli. Il client ( ~/.ssh/config ) dovrebbe avere:

SendEnv LANG LC_*

e il server ( /etc/ssh/sshd_config ) avrebbe bisogno di:

AcceptEnv LANG LC_*

Se sono entrambi presenti, il locale del client viene propagato nella shell di login sul server ssh:

$ ssh me@my-mac locale
LANG="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_ALL=

Le impostazioni del server richieste non sono presenti per impostazione predefinita su Snow Leopard ; è lì su Sierra . Ricorda di riavviare il server SSH dopo aver modificato /etc/sshd_config !!!

    
risposta data 16.10.2017 - 12:04
fonte

Leggi altre domande sui tag