Para el 11.04, hice una nueva instalación de mi sistema. Parte de que se instalan fue instalar RVM , que se pega una rvm.sh
en /etc/profile.d/
. Esto no funciona ya /etc/profile
que (que carga cada + r /etc/profile.d/*.sh
) no se está cargando. Según la documentación, el perfil solo se obtiene si bash se ejecuta al iniciar sesión. Para verificar esto, invoqué bash --login
, después de lo cual rvm
estaba disponible.
Esto me ha funcionado en versiones anteriores de Ubuntu sin ninguna configuración. Es decir, una nueva instalación de 10.10 generará correctamente el perfil / .d.
Mi pregunta es: ¿hay algo que esté haciendo mal o hay algunas suposiciones nuevas en Natty que han roto esto? Mi solución actual es source /etc/profile
in ~/.bashrc
(que es horrible ya que el perfil debe cargarse antes que bashrc, pero funciona).
/etc/profile
(y, por lo tanto, el .d). Gracias por la explicación, parece que esto requiere un seguimiento con la gente rvm./etc/profile
y~/.profile
durante el inicio de sesión. Es extraño porque siempre funcionó con versiones anteriores. Creo que esto no es una solución, sino una solución alternativa.Sin embargo, hay un archivo
/etc/bash.bashrc
que es leído por gnome-terminal y es el "archivo .bashrc de todo el sistema para shells interactivos bash (1)".Mi llamada a la función rvm
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
entró allí y funciona bien para la pareja de usuarios en ese sistema.fuente
/etc/bash.bashrc
. Bueno, al menos en Debian / Ubuntu. Bash normalmente no lee un bashrc de todo el sistema; Debian lo ha parchado para hacerlo.La instalación de RVM como multiusuario requiere que el usuario ejecute este comando:
(porque Ubuntu no obtiene /etc/profile.d al iniciar sesión)
fuente
/etc/profile.d/
durante el inicio de sesión porque el/etc/profile
bucle predeterminado recorre y genera los archivos/etc/profile.d/
. Sin embargo, si estorvm.sh
contiene código para shells interactivos, como funciones o alias, no tiene/etc/profile
sentido obtenerlos. La configuración para las sesiones de bash interactivas debe estar en.bashrc
.si tiene ZSH u OH-MY-ZSH, su perfil es / etc / zprofile
fuente
De hecho, he encontrado para aquellos a quienes no les gusta reiniciar completamente sus cajas a menos que sea absolutamente necesario lo siguiente ...
No necesita reiniciar toda la máquina para que los cambios
/etc/profile
surtan efecto. Todo lo que necesita es reiniciar la GUI del escritorio XWindows para que vuelva a leer las configuraciones (como lo haría si se iniciara como parte de un reinicio en todo el sistema).Para mí, uso xUbuntu, que usa LightDM, pero puede usar cualquier archivo ejecutable que llame a su escritorio actual.
Primero, no puede usar un emulador de terminal desde el interior de la GUI del escritorio para hacerlo (al menos no con LightDM), necesita usar SSH o una consola secundaria (si mantiene presionadas las teclas Ctrl + Alt y pulsa una tecla F o una tecla numérica) debe abandonar su pantalla o inicio de sesión de escritorio gráfico en una ventana de terminal simple). También le sugiero que cierre todas las cosas de escritorio remoto como VNC si está utilizando SSH (obviamente, SSH se puede conectar, simplemente no desea que una ventana abierta de VNC se muestre en la pantalla 0 mientras intenta reiniciarse, ya que esto puede bloquear el reinicio mientras espera a que finalice la sesión de VNC).
Hago esto todo el tiempo con SSH y es un gran salvavidas, especialmente cuando no está físicamente cerca de su máquina y no tiene ganas de esperar un reinicio completo y volver a conectar :-D
Ahora, la parte fácil una vez en un terminal "secundario" o un problema de SSH: (Sí, esto matará su sesión actual, asegúrese de que no le importe, guarde los documentos abiertos o trabaje)
espere un minuto mientras mata el escritorio y luego lo inicia nuevamente (esto puede tomar unos buenos segundos ya que las cosas se detienen y luego se ejecutan nuevamente al inicio)
Eso es todo, ahora cuando regrese a la consola 0 o vaya a usar VNC para conectarse nuevamente, será recibido por el indicador de inicio de sesión e iniciará sesión de manera normal y si abre un emulador de terminal y va a emitir su comando, ahora debería no tiene problemas ya que todo se volvió a encontrar como si hiciera un reinicio completo de la máquina.
Solo recuerde, si emite
sudo service lightdm restart
[ostop
,start
lo que sea] desde el entorno de escritorio en sí usando un emulador de terminal, el comando simplemente se quedará allí y nada parecerá que suceda. Esto se debe a que actualmente está usando esa consola (también conocida como pantalla) 0 y, por lo tanto, no puede bajar completamente y volver a subir ya que está esperando que el escritorio no esté en uso antes de ejecutar el comando.Última nota: no he intentado emitir un reinicio en el entorno desde el escritorio en un emulador de terminal y luego cambiar a otra consola que pueda reiniciarlo, pero si ya va a cambiar la consola, ¿por qué no simplemente ejecuta el comando? a partir de ahí como debería ser de todos modos?
fuente
echo ". .profile" >> ~ / .bashrc
Y luego abra otra ventana. Creo que este es el enfoque fácil.
fuente
.profile
fuentes predeterminadas.bashrc
, esto resultaría en un bucle para la mayoría de los usuarios.