“stdin: não é um tty” e correios para executar scripts como tarefas agendadas

3

Eu tenho vários scripts de shell (bash) que são iniciados pelo cron. Toda vez que um script é executado, recebo um e-mail dizendo "stdin: não é um tty". Alguém pode me dizer como consertar isso? Todos os scripts são executados com sucesso, mas esses e-mails estão matando minha pasta de e-mail.

Eu uso o Debian Wheezy. "/root/.bashrc" está vazio. Entradas Cron são como:

/bin/bash --login /root/script.sh > /dev/null

Até mesmo este script produz a mensagem de erro:

#!/bin/bash
ls

Conteúdo de .profile:

# ~/.profile: executed by Bourne-compatible login shells.

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n
    
por user4811 16.01.2014 / 01:40

1 resposta

3

Algo no seu .bashrc está assumindo que o shell está sendo executado em um terminal. Isso é perfeitamente correto: .bashrc deve rodar apenas em shells interativos, e shells interativos devem rodar apenas em terminais.

O problema é que você está sistematicamente incluindo .bashrc de .profile . Isso está errado: você deve incluir apenas .bashrc em shells interativos.

Altere seu .profile para

# Bash doesn't load its interactive initialization file if it's invoked as
# a login shell, so do it manually.
case $- in
  *i*) if [ -n "$BASH" ]; then . ~/.bashrc;; fi
esac

Mova mesg n para .bashrc : é um comando relacionado ao terminal, não um comando relacionado à sessão.

Se você tiver definições de variáveis de ambiente em .bashrc , mova-as para .profile . O arquivo .profile é para coisas que são executadas quando sua sessão é iniciada, geralmente principalmente definições de variáveis de ambiente, usadas por qualquer aplicativo que você executará durante a sessão. O arquivo .bashrc é o arquivo de configuração do bash quando executado de forma interativa, ele geralmente contém a configuração do terminal, definições de alias, opções de shell e configurações de conclusão, além de outras coisas relacionadas ao uso interativo do shell.

Para informações básicas, consulte:

por 16.01.2014 / 02:16