ABulychev, тщательнее надо (q).
Содержимое /etc/profile (а именно его вы привели в предыдущем сообщении) я себе представляю.
Если положили его в ~/.profile -- в этом мало толку, уберите.
Установка LANG там проста:
/etc/profile
# Append any additional sh scripts found in /etc/profile.d/:
for profile_script in /etc/profile.d/*.sh ; do
if [ -x $profile_script ]; then
. $profile_script
fi
done
/etc/profile.d/lang.sh
export LANG=ru_RU.UTF-8
export LC_COLLATE=C
Вот только вся эта прелесть не отрабатывает, если bash запускается не как login shell.
К вашему случаю отношение имеет вряд ли -- обратите внимание, в gnome-terminal выхлоп "LANG=", то есть либо пустое значение, либо переменной в окружении нет, точнее скажет declare | grep ^LANG.
Теперь немного о том, на что похоже поведение. Удаление переменных из окружения дочернего процесса с повышенными привилегиями является обычной практикой. Но, например, в составе Slackware-13.1 su имел ошибку в логическом условии и очищал переменные LANG, LC_* вместо того, чтобы оставлять их. Подробнее: http://www.slackware.ru/wiki/BugFix/13.1/su
Резюме.
Пользуйтесь "su -", "su -l" вместо "su". gnome-terminal > su - > locale. От "просто su" будут и другие проблемы, например, принадлежащие root-у файлы в домашнем каталоге пользователя.