Cuando ~/.profile
inicia sesión, el archivo es leído por el shell de inicio de sesión (ksh para usted). Puede indicarle a ese shell de inicio de sesión que se reemplace por bash. Debes tomar algunas precauciones:
- Solo reemplace el shell de inicio de sesión si es interactivo. Esto es importante: de lo contrario, el inicio de sesión en modo gráfico puede no funcionar (esto depende del sistema: algunos pero no todos los sistemas leen
~/.profile
al iniciar sesión a través de xdm o similar), y las expresiones idiomáticas tales como ssh foo '. ~/.profile; mycommand'
fallarán.
- Verifique que bash esté disponible, de modo que aún pueda iniciar sesión si el ejecutable no está allí por alguna razón.
Tiene la opción de ejecutar bash como shell de inicio de sesión o no. La única diferencia importante para convertirlo en un shell de inicio de sesión es que se cargará ~/.bash_profile
o ~/.profile
. Entonces, si ejecuta bash como shell de inicio de sesión, tenga mucho cuidado de tener ~/.bash_profile
o tener cuidado de no ejecutar bash recursivamente desde ~/.profile
. No hay una ventaja real de haber ~/.profile
ejecutado por bash en lugar de ksh, por lo que recomiendo no hacerlo.
Establezca también la SHELL
variable de entorno en bash, para que los programas como los emuladores de terminal invoquen ese shell.
Aquí hay un código para cambiar a bash. Ponlo al final de ~/.profile
.
case $- in
*i*)
# Interactive session. Try switching to bash.
if [ -z "$BASH" ]; then # do nothing if running under bash already
bash=$(command -v bash)
if [ -x "$bash" ]; then
export SHELL="$bash"
exec "$bash"
fi
fi
esac
Gilles 'SO- deja de ser malvado'
fuente
.profile
solo funciona para el shell de inicio de sesión (como OP necesita). Utilizo Remote Desktop Connection de Windows 10 para iniciar sesión en una estación de trabajo Linux, luego abro Terminal en gnome. Quierozsh
mientras mi administrador me dabash
. En este caso, tengo que agregar el fragmento en.bashrc
lugar de.profile
.Esto es un poco complicado, pero puede hacer
bash
que sea el shell que está utilizando al iniciar sesión creando un.profile
archivo en su directorio de inicio que contengaEsto hará que la
ksh
sesión sea reemplazada por unabash
sesión. No tendrá que escribirexit
(o^D
) dos veces, como lo haría si iniciara manualmente una nuevabash
sesión cada vez que inicia sesión. Y escribiendoincluso devolverá el camino a
bash
.fuente
exec bash -l
.type
se recomienda más dewhich
.bash
leerá también.profile
generando así un bucle infinito? Estoy de acuerdo en que algo asíexec bash
es lo que quieres, pero debes asegurarte de hacerlo solo en tu ksh de inicio de sesión, por lo que se requieren algunas declaraciones if.~/.bash_profile
o~/.bash_login
La respuesta de Giles debería tener el indicador -l agregado al ejecutar bash, de modo que cualquier script de perfil de inicio de sesión se obtenga en el nuevo shell de bash. (Por ejemplo, cualquier cosa en /etc/profile.d/ en RHEL). El guión debería ser:
fuente
-l
opción? He usado esto durante meses sin problemas sin problemas.Una respuesta para
csh/tcsh
inspirado por el más votado por @Gilles esfuente
Solaris:
fuente