¿Alguna idea sobre cómo puedo cambiar la concha para pescar?
$ sudo usermod -s /usr/bin/fish jaan
usermod: user 'jaan' does not exist in /etc/passwd
$ getent passwd $USER
jaan:x:15466:94:Jaan Altosaar:/home/jaan:/bin/zsh
Preguntas relacionadas: el usuario no existe en / etc / passwd cuando intenta cambiar el shell predeterminado Parece que usa ldap.
$ cat /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
# Having the NOTFOUND=return bit was breaking dns resolution on web1 and web2. But we probably
# don't want any of the mdns stuff so let's get rid of it all.
#hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: ldap
automount: ldap
Así que instalé el paquete relevante ldap.
$ chsh.ldap
LDAP password for jaan:
Enter the new value, or press ENTER for the default
Login Shell [/bin/zsh]: /usr/bin/fish
Traceback (most recent call last):
File "/usr/bin/chsh.ldap", line 69, in <module>
constants.NSLCD_USERMOD_SHELL: shell,
File "/usr/share/nslcd-utils/nslcd.py", line 128, in usermod
assert con.get_response() == constants.NSLCD_RESULT_BEGIN
File "/usr/share/nslcd-utils/nslcd.py", line 103, in get_response
return self.read_int32()
File "/usr/share/nslcd-utils/nslcd.py", line 71, in read_int32
return _int32.unpack(self.read(_int32.size))[0]
struct.error: unpack requires a string argument of length 4
$ which fish
/usr/bin/fish
$ chsh.ldap
LDAP password for jaan:
Enter the new value, or press ENTER for the default
Login Shell [/bin/zsh]: "/usr/bin/fish"
/usr/bin/chsh.ldap: "/usr/bin/fish" is an invalid shell
$ /usr/bin/fish
(standard_in) 1: syntax error
Welcome to fish, the friendly interactive shell
command-line
etc
fish
chsh
Abhishek Bhatia
fuente
fuente
/etc/shells
parachsh
-como herramientas para aceptarla.Respuestas:
Aquí tiene una pista:
/usr/bin/chsh.ldap: "/usr/bin/fish" is an invalid shell
. Parece que deberías agregar/usr/bin/fish
a/etc/shells
.fuente
chsh.ldap -s /usr/bin/zsh myusername
me da unSegmentation fault
.Espera, es un usuario LDAP, hay una configuración en LDAP que te permite cambiar el shell predeterminado para el usuario en ellos.
Puede instalar ldap-account-manager que le proporciona un contenido web para la configuración de ldap.
Esto se puede hacer en cualquier servidor en el que desee manejar la configuración. Ya que de todos modos deberá configurar el servidor en los archivos de configuración. Pero le recomendaría que lo instale en el servidor que tiene el ldap realmente ejecutándose, para que pueda recordarlo más fácilmente.
fuente
Para citar a ajmitch aquí ,
Simplemente use
chsh -s which fish
Y asegúrese de cerrar sesión y volver a iniciar sesión o reiniciar su computadora.Por cierto, esto podría ser un posible duplicado aquí: ¿Cómo configuro fish como el shell predeterminado?
fuente
$ chsh -s `which fish` Password: chsh: user 'jaan' does not exist in /etc/passwd