FreeBSD: изменить shell пользователя

Автор: | 17/10/2013

freebsd_logoПо-умолчанию во FreeBSD используется sh для обычных пользователей, и csh для пользователя root.

Что бы изменить shell для пользователя, можно воспользоваться несколькими вариантами.

Убедитесь, что нужный shell присутствует в файле /etc/shells:

# cat /etc/shells
...
/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/bash
/usr/local/bin/rbash

Проверьте текущее окружение:

# echo $shell
/bin/csh

Теперь можно отредактировать файл /etc/passwd и указать новый shell для пользователя вручную:

# vim /etc/passwd
...
root:*:0:0:Charlie &:/root:/bin/csh
...

Достаточно заменить /bin/csh на /usr/local/bin/bash, и выполнить повторный вход в систему.

Что бы изменить shell без повторного входа – достаточно запустить:

# exec /usr/local/bin/bash

Проверяем:

# echo $0
/usr/local/bin/bash

Ещё один вариант – с помощью команды chsh. Если выполнить её без опций – она откроет текстовый редактор, в котором надо изменить строку Shell:.

Другой вариант – выполнить chsh с ключём -s:

# chsh -s /bin/sh setevoy
chsh: user information updated

После ключа -s указывается новый shell и пользователь, для которого необходимо его изменить. Если пользователь не указан – информация будет изменена для пользователя, запустившего команду.

Проверим:

# cat /etc/passwd | grep setevoy
setevoy:*:1001:1001:User &:/home/setevoy:/bin/sh

Альтернатива – с помощью утилиты chpass, которая работает аналогично chsh:

# chpass -s /usr/local/bin/bash setevoy
chpass: user information updated

# cat /etc/passwd | grep setevoy
setevoy:*:1001:1001:User &:/home/setevoy:/usr/local/bin/bash