Icono del sitio Shakaran

Solucionar “stdin: is not a tty”


 

TTY

Normalmente se puede encontrar este aviso/error usando scp o sobre otras aplicaciones que utilicen sesiones ssh no interactivas en algún servidor o estación de trabajo.

No suele perjudicar el rendimiento de la aplicación o implicar algún mal funcionamiento, pero puede resultar molesto o generar dudas de si todo esta funcionando correctamente.

El problema se origina cuando por ejemplo scp se ejecuta leyendo el archivo de bash ~/.bashrc y este invoca al bashrc global en /etc/bashrc. El archivo global de bashrc tiene comandos que sólo son aplicables si la sesión es interactiva y puesto que scp se ejecuta sobre una sesión no interactiva esos comandos no se ejecutaran apropiadamente, provocando el error mencionado.

Para solucionarlo, se puede optar por detectar si la sesión es interactiva y no cargar dichos ficheros. Para ello se debe editar justo al principio del archivo ~/.bashrc y añadir las siguientes líneas:

if [ $(expr index "$-" i) -eq 0 ]; then
    return
fi

Estas línea detectan si se trata de una sesión interactiva que contenga “i” $-, y parara de procesar el .bashrc (antes de que el bashrc global se invoque) y no se generen errores.


Salir de la versión móvil