Comme vous n'avez pas décoché l'option "Set locale environment variables on startup", Terminal définit LANG
en fonction de la région sélectionnée dans les préférences du système.
$ defaults read -g AppleLocale
ja_JP
$ locale
LANG="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_CTYPE="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_ALL=
$ asd
bash: asd:
Vous pouvez modifier LANG
en ajoutant une ligne comme celle-ci à ~/.bash_profile
:
export LANG=en_US.UTF-8
Après cela, les commandes ci-dessus devraient s'afficher comme suit :
$ locale
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL=
$ asd
bash: asd: command not found
LC_ALL
n'a pas besoin d'être défini. LANG
y LC_ALL
Il existe différentes façons de modifier la LC_
les variables qui sont indiquées entre LANG
y LC_ALL
ci-dessus. LANG
est utilisé comme valeur par défaut pour les variables locales non définies. LC_ALL
remplace les variables locales même si elles ont été définies, et si elle est définie, la modification d'autres variables locales n'a pas d'effet.
Si vous décochez la case "Set locale environment variables on startup" et que vous ne configurez les variables linguistiques nulle part, les shells utiliseront les paramètres linguistiques C par défaut. Cela complique cependant le travail avec du texte non-ASCII. Dans bash, les caractères non ASCII sont affichés et insérés sous forme de séquences d'échappement. ä
est interprété comme M-l
. Vous pouvez remédier à tous ces problèmes en changer output-meta, input-meta, et convert-meta dans ~/.inputrc mais même dans ce cas pbpaste
y pbcopy
mélanger les caractères UTF-8, ls
affiche les caractères non ASCII sous forme de points d'interrogation, et vous ne pouvez pas saisir de caractères non ASCII dans Emacs. À mon avis, il est plus facile d'utiliser une locale UTF-8.