Как заставить базовую утилиту 'who' использовать формат даты "% Y-% m-% d% H:% M"?Я пытался изменить мой LANG, LC_ALL, LC_TIME, но ни один из них не дал требуемого результата.Мне удалось заставить его работать с помощью следующей команды: env -i ssh me @ remotemachine 'who -s'
Ну, в этом случае SSH не отправлял мои переменные LANG и LC_ * на удаленную машину.
Давайте посмотрим на исходный код утилиты who:
if (hard_locale (LC_TIME))
{
time_format = "%Y-%m-%d %H:%M";
time_format_width = 4 + 1 + 2 + 1 + 2 + 1 + 2 + 1 + 2;
}
else
{
time_format = "%b %e %H:%M";
time_format_width = 3 + 1 + 2 + 1 + 2 + 1 + 2;
}
Что ж, мне нужно это на Linux и Mac OS X (BSD), но «who» ведет себя одинаково на обоих,Код hard_locale () находится прямо здесь: http://opensource.apple.com/source/text_cmds/text_cmds-81/sort/hard-locale.c
Он проверяет LC_TIME и, если это "C" или "POSIX", это не сложно найти, в этом случае он не может использовать любую локаль.
Настройка:
export LANG=en_US.UTF-8
export LC_TIME=en_US.UTF-8
export LC_ALL=en_US.UTF-8
Не изменяет формат даты при выводе «кто».
Еще одно интересное наблюдение:
# 2012-01-13 13:56 is used on remote machine (en_US.UTF-8)
# Now let's do this:
# env -i ssh me@remotemachine 'who -s'
# Jan 13 14:33 is used on remote machine
Есть идеи?Или, может быть, установка переменных не достаточно?
Спасибо!