
Yo preguntéesta preguntaHace algún tiempo que el shell no muestra la ruta. Recientemente descubrí que .bashrc
no se obtiene la fuente (y esto debería ser unpractica normal?). Actualmente, el símbolo del sistema del shell es así:
-bash-4.3#
Después de ejecutar source .bashrc
, puedo obtener el símbolo del sistema de shell esperado:
root@ubuntu2011:~#
¿Dónde ubuntu2011
está el nombre de la máquina? ¿Cómo puedo hacer que el mensaje se parezca al último cada vez que inicio sesión?
PD: el .bashrc
es de:cp /etc/skel/.bashrc ~/.bashrc
ACTUALIZAR: el contenido de ~/.profile
es el siguiente:
# ~/.profile: executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
mesg n
y echo $BASH
regresa/bin/bash
ACTUALIZAR: Respuestas a las preguntas de @terdon:
- ¿Cómo inicio sesión en el servidor?
Yo suelo iniciar sesión como
ssh [email protected]
root
- ¿Se ejecutan esos comandos como root?
Sí.
ACTUALIZAR: La salida de ls -l ~/.{profile,bashrc,bash_profile,bash_login}
:
ls: cannot access /root/.bash_login: No such file or directory
-rw-r--r-- 1 root root 63 Dec 24 2012 /root/.bash_profile
-rw-r--r-- 1 root root 3637 May 17 17:00 /root/.bashrc
-rw-r--r-- 1 root root 140 Apr 23 2010 /root/.profile
Respuesta1
Esto sucede porque estás iniciando sesión a través de ssh
. Todo se reduce a las diferencias entre shells de inicio de sesión y sin inicio de sesión. Cuando te conectas a través de ssh, ejecutas un shell interactivo de inicio de sesión. Como se explica en man bash
, este tipo de shell:
Cuando se invoca bash como un shell de inicio de sesión interactivo, o como un shell no interactivo con la opción --login, primero lee y ejecuta comandos del archivo /etc/profile, si ese archivo existe. Después de leer ese archivo, busca ~/.bash_profile, ~/.bash_login y ~/.profile, en ese orden, y lee y ejecuta comandos desde el primero que existe y es legible. La opción --noprofile se puede utilizar cuando se inicia el shell para inhibir este comportamiento.
En otras palabras, ~/.bashrc
se ignora de forma predeterminada cuando se ejecutan shells de inicio de sesión. La solución simple es obtenerlo explícitamente de uno de los archivos que se leen. Como puede ver arriba, los shells de inicio de sesión primero intentarán leer ~/.bash_profile
, y si eso no existe ~/.bash_login
, y si tampoco existe, leen ~/.profile
. Como tiene un ~/.bash_profile
archivo, deberá agregarle estas líneas:
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Respuesta2
Pon esto en tu ~/.profile
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi