Este é o comportamento pretendido; O ksh registra automaticamente todas as definições de função no arquivo de histórico.
Esta opção pode ser desativada com a opção "nolog": set -o nolog
Nós executamos o IBM AIX aqui (atualmente 7100-03-03-1415) que está faltando uma boa quantia da predefinição do utilitário em outras versões do UNIX. Uma das coisas que precisamos fazer em uma base semi-regular é converter de tempo de época para um timestamp padrão. Para resolver este problema, criei esta função e coloquei em /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
}
A função recebe um argumento ou lê de stdin
e imprime o registro de data e hora convertido.
Desde o envio desta função para todos os nossos LPARs para uso geral, notei que o texto da função está aparecendo em todos os usuários ' .sh_history
depois de gerar um novo shell:
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
Eu nunca vi nada assim antes. Não está afetando a produção ou o tempo de atividade, então isso é mais uma curiosidade do que qualquer outra coisa. É óbvio que a função está sendo lida ao carregar o shell do usuário, mas o que estaria causando isso para imprimir no histórico do shell?
Editado para adicionar: Versão do ksh em execução no momento, M-11/16 / 88f.