У меня есть переменная среды для набора ЛЕНГА в ~/.profile, но это не становится установленным

Я думаю, что хорошая альтернатива для такого компьютера выбирает дистрибутив, который позволяет Вам "создать" свою систему. Тем путем можно избирательно подойти к выбору любых компонентов, в которых Вы нуждаетесь. В этом случае я рекомендовал бы Вам Дугу Linux или хинду.

По моему скромному мнению, сначала каждый лучше, потому что это предварительно скомпилировало пакеты и двоичные файлы (хотя, можно все еще использовать ABS и скомпилировать пакеты сами!). Сообщество является потрясающим, и их Wiki является, вероятно, одним из лучших, который является вокруг сети. Можно установить его через usb, CD-ROM или через сеть. Это очень легко, и основная установка является reaaaally тонкой :).

8
08.01.2014, 19:34
4 ответа

Существует много других файлов инициализации, где переменные могут быть установлены после применения Вашего .profile такой как .bash_profile .bashrc ... и т.д., или просто другой нестандартный файл, названный от .profile самостоятельно. Я предлагаю сначала, чтобы Вы искали каждый случаи Ваших переменных в Вашем корневом каталоге:

grep "LANG=" .* 
7
27.01.2020, 20:09

В debian Вы устанавливаете локали с помощью следующей команды:

# dpkg-reconfigure locales

Это создаст /etc/default/locale файл и добавляет только LANG переменная к нему. Если Вы хотите настроить весь LC_* переменные, можно добавить их там также:

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=C
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=C
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=
4
27.01.2020, 20:09
  • 1
    Debian является многопользовательской системой, должен быть способ для каждого пользователя иметь там собственную локаль. спасибо –  ctrl-alt-delor 09.01.2014, 11:07
  • 2
    я использую openbox и в моем случае я могу установить каждый из LC_* и LANG переменные в ~/.config/openbox/environment при помощи export. Если Вы используете a gnome рабочий стол, необходимо проверить его опцию, я помню, что было что-то об установке языка где-нибудь в панели управления. –  Mikhail Morfikov 09.01.2014, 13:25

Проверьте, есть ли у Вас a ~/.bash_profile или ~/.bash_login; они переопределят ~/.profile.

От man bash:

Когда удар вызывается как интерактивная оболочка входа в систему, или как неинтерактивная оболочка с - опция входа в систему, он сначала читает и выполняет команды из файла /etc/profile, если тот файл существует. После чтения того файла это ищет ~/.bash_profile, ~/.bash_login, и ~/.profile, в том порядке и чтениях и выполняет команды от первой, которая существует и читаема.

"Поскольку интерактивная оболочка входа в систему" является значительной, потому что интерактивные оболочки часто не являются оболочками входа в систему. Если Вы просто измените один из тех файлов и запустите новый терминал GUI, например, то он не будет применяться. Это только читается, когда Вы на самом деле входите в систему.


Другая возможность состоит в том, что Ваш ЛЕНГ впоследствии сбрасывается в масштабе всей системы bashrc; проверьте, чтобы видеть, получены ли Вы в ~/.bashrc, затем, например.

grep LANG /etc/bashrc
2
27.01.2020, 20:09
  • 1
    Извините за не обращение лучшего внимания! Я добавил еще один (съемка общим планом) возможность внизу. –  goldilocks 08.01.2014, 19:46

Прошёл и наконец понял это, потому что это сводило меня с ума, когда мне приходилось делать это вручную, не казалось правильным. В debian это можно сделать с помощью утилиты update-locale . Команда

update-locale --reset

вызовет игнорирование файла /etc/default/locale (она просто комментирует переменную LANG); в результате появится локаль из:

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

Команда

update-locale LANG=en_US.UTF-8

установит ваш LANG на: LANG. ... вы догадались, что она en_US.UTF-8, в результате чего локаль генерирует:

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=

и, наконец, чтобы охватить все мои базы...

update-locale LANG=C

установит ваш LANG в C, в результате чего locale выдаст:

LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
3
27.01.2020, 20:09

Теги

Похожие вопросы