Estoy usando las computadoras de mi escuela y me gustaría usarlas en zshlugar de bash. Me gustaría convertirlo en el shell predeterminado, pero no puedo ejecutar un comando, como $ chsh -s $(which zsh)porque no tengo privilegios de administrador.
¿Hay alguna manera de poner algo en mi .bashrco algo que llame automáticamente zshcuando se abre como una solución?
Para aclarar, zshya está instalado.

zshel.bashrcarchivo. Cerrar sesión e iniciar sesión y listo!zshen la primera línea?bashse llama explícitamente. Mejor colóquelo en su.bash_profilelugar.Respuestas:
Cree
.bash_profileen su directorio personal y agregue estas líneas:Actualización:
.profilepuede funcionar como una solución general cuando el shell predeterminado no es bash. No estoy seguro de si.profileZsh también puede llamarlo para que sea redundante, pero podemos hacerlo de forma segura con una simple verificación:También podemos usar
whichpara obtener la ruta dinámicazshque se basa en el valor de$PATH:fuente
.bash_profileno será referenciado. ¿Qué tal poner esto en su.profilelugar?.profilehice no funcionó. ¿También no.profilesería llamado porZsh? Podría ser redundante. Sin embargo, todavía no lo he comprobado. (Actualización: funcionó ahora, no estoy seguro de qué error cometí antes). ¿Alguna idea sobre posibles inconvenientes con el uso.profile?.profilesi.bash_profileno existe (a menos que lo obtenga manualmente.bash_profile, por supuesto). En concreto, las fuentes de bash el primero de los archivos [.bash_profile>.bash_login>.profile] que encuentra. Solo se busca.profilecomo una característica de compatibilidad POSIX (Bourne shell).zsh..bash_profiley.profileno funcionó (los archivos ni siquiera fueron ejecutados, Fedora 26 en una computadora de la universidad).Normalmente puede usarlo
chshcomo usuario no root. Pero ocasionalmente está deshabilitado, generalmente en sitios que usan alguna forma de base de datos de usuarios en red como NIS y LDAP. Puede haber unypchsh(NIS) ochsh.ldap(LDAP) en su lugar.chshPor lo general, también permitirá solo algunos shells aprobados , generalmente los que se enumeran en/etc/shells.Si no puede usar
chsho sus variantes en su sitio, organice su shell de inicio de sesión enexecsu shell favorito y configure laSHELLvariable para que apunte a su shell favorito.Si su shell de inicio de sesión es
sh,dashoksh: el archivo que necesita editar es~/.profile. Tenga en cuenta que este archivo se lee al comienzo de una sesión interactiva, así como por algunos scripts de inicio de sesión no interactivos (por ejemplo, para sesiones X11), por lo que debe tener cuidado: solo llameexec(que reemplaza el proceso actual) cuando el actual Shell es interactivo. Excepto por el shell Bourne (el/bin/shde Solaris 10 y anteriores), puede decir que un shell es interactivo por la presencia deien la lista de opciones ($-).Si quieres que zsh lea tu
.zprofile, pasa la-lopción.Si su shell de inicio de sesión es
bash, puede continuar como se indicó anteriormente. Alternativamente, puede poner estos comandos en~/.bash_profile. La mayoría de los scripts de inicio de sesión solo leen~/.profiley no~/.bash_profile, pero he visto algunos que se ejecutan en bash y read.bash_profile, por lo que incluso allí debe tener cuidado de no llamarexeca un shell no interactivo.Si su shell de inicio de sesión es csh o tcsh, consulte un ejemplo en Cambio del shell predeterminado sin chsh o privilegios de administrador
fuente
Creo que el comando
chshes para este mismo propósito. Aunque, no estoy seguro de que todas las distribuciones de Linux / Unix lo admitan. Consulte la página del manual dechsh.fuente
passwd -s.Si no puede ejecutar
chshporque no tiene privilegios de administrador, hable con alguien que sí lo tenga .Lo más probable es que no pueda usarlo
chshcomo no root porque el sistema que está usando está configurado para quechshno funcione, por ejemplo, porque el sistema usa NIS o LDAP en lugar de solo el/etc/passwdarchivo. O tal vez el administrador de su sistema solo quiere mantener algo de control.El procedimiento para cambiar su shell depende de las políticas de su organización. Puede haber un comando local que haga lo que
chshnormalmente hace. O puede que tenga que enviar un ticket de soporte solicitando un cambio de shell.La mayoría de las otras respuestas son buenas, pero si sus administradores responden razonablemente, es posible que no quiera molestarse en hackear sus scripts de inicio. Probablemente solo invoque
zsh -lmanualmente después de iniciar sesión hasta que el administrador pueda actualizar mi cuenta.Otra cosa a tener en cuenta: a veces, diferentes shells pueden usar los mismos archivos de inicio. Por ejemplo,
shybashpuede tanto ejecutar$HOME/.profile, ycshytcshambos pueden ejecutar$HOME/.loginy$HOME/.cshrc(aunque los archivos de inicio de caparazón específicos como.bashrc,.bash_profiley.tcshrcpuede anular los). Si su shell predeterminado es/bin/cshy desea utilizarlo/bin/tcsh, actualizar su.logininvocación/bin/tcsh -lpodría crear un bucle infinito.zshno ejecutabasharchivos de inicio específicos, por lo que no es un problema para usted.La mayoría de las conchas establecen variables que identifican qué shell se está ejecutando (
$BASH_VERSION,$tcsh,$ZSH_VERSION). Si va a escribir un código de inicio para invocar su shell preferido, no es una mala idea encerrarlo deifmanera que se ejecute solo si aún no está ejecutando ese shell. Usando el código de la respuesta de konsolebox :(La complicación añadida de comprobación
"${ZSH_VERSION:-unset}"en lugar de sólo"$ZSH_VERSION"admite la posibilidad de que usted ha hechoset -o unset, una opción que hace que una referencia a una variable no definida para ser un error).fuente
Puedo pensar en algunos escenarios.
zshno está en/etc/shells, y el OP desea usarlo sin tener que escribirzshen el símbolo del sistema. Soluciones posibles.a) use trucos de perfil para ejecutarlo al iniciar sesión. Esto es tan efectivo como cambiar el caparazón.
b) pedir al administrador añadir
zsha/etc/shellslo que puedechsha ellac) rogarle al administrador que cambie su shell. esto no es sabio, porque te perderá la capacidad de entrar
ftp. Solo puedes usarloftpsi tienes un caparazón en/etc/shellsel usuario desea escapar de un shell restringido, muy probablemente
rbashorsh.Si
.profilees editable,PATHse puede ampliar editándolo. Una vez que/binestá en el camino, puede comenzarbashdesde adentrorsh/rbash, obteniendo acceso alchshcomando que le permite cambiar los shells. Muchos comandos tienen escapes de shell que se pueden usar para escapar de un shell restringido y recuperar el accesochsh.chshRealmente no funciona por alguna otra razón. La solución de la posibilidad 1 es una respuesta aquí también.El escenario 2 es la única razón para cambiar realmente el shell predeterminado (es demasiado restrictivo).
fuente
No creo que la respuesta proporcionada realmente haga
zshel shell predeterminado. Simplemente cambia el shell a zsh tan pronto como el usuario inicia sesión en su shell predeterminado . El usuario todavía iniciará sesión en suDEFAULT SHELLpero con esto, el shell cambiará azshPara cambiar el uso predeterminado del shell:
Deberías ser root para hacer eso.
De lo contrario, la solución anterior será útil.
Agregado del comentario
y puede ser invocado por el usuario por sí mismo.
fuente
chsh -s /path/to/zshes más estándar y generalmente (pero no siempre) no requiere acceso de root, a diferencia de lousermodque siempre hace. Por lo tanto, su respuesta tiene más problemas de lo que la pregunta ya dice que no funciona.