Мы выполняем IBM AIX сюда (в настоящее время 7100-03-03-1415), который пропускает изрядное количество служебной предварительной установки в других версиях UNIX. Одной из вещей, которые мы должны сделать на полурегулярной основе, является преобразование со времени эпохи к стандартной метке времени. Для решения этой проблемы я создал эту функцию и поместил ее в /etc/profile
:
## Functions that are useful enough to be inherited by everyone ##
# Prints timestamp from epoch time
epoch() {
if [ $# -eq 1 ] ; then
SECONDS="$1"
elif [ -t 0 ] || [ $# -gt 1 ] ; then
echo "Usage: epoch <timestamp>"
return 127
else
read SECONDS
fi
perl -e 'print scalar localtime $ARGV[0],"\n"' $SECONDS
return 0
}
Функция берет или аргумент или читает из stdin
и печатает преобразованную метку времени.
Начиная с продвижения этой функции ко всем нашим LPARs для использования через плату я заметил, что текст функции появляется в каждом пользователи .sh_history
после порождения новой оболочки:
ls -la
ssh localhost
if [ $# -eq 1 ] ; then
SECONDS="$1"
elif [ -t 0 ] || [ $# -gt 1 ] ; then
echo "Usage: epoch <timestamp>"
return 127
else
read SECONDS
fi
perl -e 'print scalar localtime $ARGV[0],"\n"' $SECONDS
return 0
}
cat .sh_history
Я никогда не видел ничего как это прежде. Это не влияет на производство или время работы, таким образом, это - больше любопытства, чем что-либо еще. Очевидно, что функция читается при загрузке оболочки пользователя, но что заставило бы это печатать к истории оболочки?
Отредактированный для добавления: В настоящее время выполняя ksh версию M-11/16/88f.
Это на самом деле предполагаемое поведение; ksh автоматически регистрирует все определения функций в файле истории.
Этот параметр можно отключить с помощью параметра «nolog»: set -o nolog