1 votos

`exec / bin / bash -il` falla en .profile

La página del manual de Bash dice:

Después de leer ese archivo (/etc/profile), busca ~/.bash_profile, ~/.bash_login, y ~/.de perfil, en ese orden, y lee y ejecuta los comandos de la primera, que existe y es legible.

Así que si tengo un ~/.bash_profile y ~/.profile, sólo el primero será el que se ejecute.

Porque yo a menudo comparten un HOGAR entre los diferentes sistemas que tienen ambos, duro vinculados. En 18.04.2 un inicio de sesión vuelve a la pantalla de inicio de sesión. Con cada uno como un independiente, pero idénticos archivo, ocurre lo mismo. Para compartir entre los sistemas disponibles y conchas mi .profile contiene un case instrucción basada en $0, establecer, según proceda, o de ejecutar una shell preferido. Efectivamente lo que hace:

case $0 in
*bash) ... some stuff ...
;;
*) exec /bin/bash -il
;;
esac

Poner un # antes de la exec en la .profile copia y todo funciona bien...

El .bash_profile es idéntico (aparte de la # en .profile al insertar uno).

Resulta que 18.04.2 está muy feliz con que exec en ~/.bash_profile, pero no en ~/.profile (que no debería ser de lectura de todos modos). Cuando existe, el registro de la contraseña → pantalla en negro brevemente → ventana de inicio de sesión de nuevo. Cuando comentado, inicio de sesión pasa correctamente. También es el shell Bash, por lo que la sucursal de la caja no debe ser tomada.

Los pensamientos?

1voto

Olorin Puntos 388

La interfaz gráfica de usuario proceso de inicio de sesión de mayo de origen /etc/profile y ~/.profile para la configuración de variables de entorno, etc., y que se puede utilizar /bin/dash o /bin/bash para que. Pedir Ubuntu tiene muchos casos de interfaz gráfica de usuario de inicio de sesión a fallar debido a errores en ~/.profile o /etc/profile. No debería ser exec'ing algo más en estos archivos sin comprobar interactivo de uso, al menos. Por ejemplo, el valor predeterminado .bashrc tiene esta en la parte superior, que se puede adaptar:

~ head /etc/skel/.bashrc 
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: