В моих ~/.profile
у меня есть:
export LANG=C.UTF-8
Я думаю, что это был Ubuntu по умолчанию.
Однако, когда я запускаю оболочку (например, Konsole), я получаю:
gz@gcomputer:~$ echo $LANG
de_DE.UTF-8
Даже когда я изменяю свой ~/.profile
на export LANG=en_US.UTF-8
, я не вижу разницы.
Почему? Как я могу это исправить?
Согласно этому ответу необходимо изменить настройки языка в etc/default/locale
и ~/.pam_environment
, не в ~/.profile
etc/default/locale
сгенерирован update-locale
таким образом, Вы делаете это для установки LANG=en_GB.UTF-8
(файл также устанавливает ЯЗЫК),
update-locale LANG=en_GB.UTF-8
В ~/.pam_environment настройки языка выглядят одинаково как в /etc/default/locale
:
LANGUAGE=en_GB:en
LANG=en_GB.UTF-8
и может быть отредактирован, как желаемый. Необходимо выйти из системы и въехать задним ходом или использовать source
:
В целом необходимо выйти из системы и войти в для изменений, внесенных в ~/.profile
вступить в силу.
Однако можно сделать их мгновенным использованием source
source ~/.profile
Пример:
Я редактирую свой ~/.profile для включения:
export foo=bar
сохраните и выйдите...
в новой оболочке:
$ echo $foo
(ничто)
$ source ~/.profile
$ echo $foo
bar
Если ничто не изменилось после того, чтобы выходить из системы, и въезжайте задним ходом, проверьте это ~/.bash_profile
и ~/.bash_login
не существуйте (потому что, как упомянуто @ByteCommander, если они действительно существуют, ~/.profile
не получен),
Если любой действительно существует, лучшая вещь сделать состоит в том, чтобы, вероятно, скопировать любые команды от них в Ваш ~/.profile
и переименуйте их что-то как ~/.bash_profile_old
и ~/.bash_login_old
, так, чтобы ~/.profile
получен (и Вы не в зависимости от удара, являющегося Вашей оболочкой),
Если ни один из них не существует, это может быть это ~/.profile
все еще не становится полученным по некоторым причинам:
См. ответ Eliah Kagan здесь для большего количества детали
Предложенное обходное решение должно использовать... ~/.pam_environment
По причинам, слишком утомительным для вхождения здесь, колотите, имеет несколько конфигурационных файлов в расчете на пользователя. Самые важные два .profile
и .bashrc
. Bash читает один или другие из них на каждом запуске, но не обоих, в зависимости от условий, которые слишком сбивают с толку меня, чтобы потрудиться помнить.
Что я делаю вместо этого помещается все значимое в .profile
, плюс дополнительное чтение строки
profile_loaded=t
и затем у меня есть a .bashrc
состоя только из
if test -z "$profile_loaded"; then
. ~/.profile
fi
При принятии этого подхода важно удостовериться что все .profile
делает идемпотент, который является необычным словом для того, чтобы, "сделать это несколько раз совпадает с выполнением его только однажды. Один простой способ выполнить, который должен перенести все содержание .profile
в подобном условном выражении:
if test -z "$profile_loaded"; then
# ... all the actual work goes here ...
profile_loaded=t
fi
(Если Вам назвали файлы .bash_profile
или .bash_login
, это путает проблему далее: Я настоятельно рекомендую копировать их содержание в .profile
, удаление их и затем чистка любое дублирование в .profile
.)