O corpo da função definido em / etc / profile aparece no histórico do shell no login

2

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.

    
por Tsamaunk 03.12.2014 / 22:09

1 resposta

2

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

    
por 13.02.2015 / 20:29