Назад | Перейти на главную страницу

хотите, чтобы пользователь выйдет из оболочки при выходе из сценария bash

Я хочу, чтобы когда пользователь linux выходит из сценария оболочки, он также выходит из оболочки bash. Это возможно?

Вместо обычного запуска скрипта, exec вместо этого. Это заменит оболочку входа в систему, поэтому, когда сценарий завершится, пользователь выйдет из системы.

Завершите свой сценарий с помощью kill -HUP $PPID

$ PPID - это идентификатор родительского процесса.

В зависимости от того, что вы пытаетесь выполнить, вы можете использовать имя сценария вместо ракушки в / etc / passwd.

Последняя запись в / etc / passwd (все после последнего двоеточия) - это оболочка который запускается, когда пользователь входит в систему. Изменив это на имя вашего скрипта, когда скрипт завершится, по определению, оболочка тоже.

** Однако будьте очень осторожны при редактировании / etc / passwd, поскольку вы можете заблокировать доступ к своей машине. По-видимому, вы можете сделать это с помощью

usermod --shell <script name> <user name>

что было бы более безопасным способом внести это изменение.

Другой подход может заключаться в source сценарий вместо того, чтобы вызывать его напрямую, exit оператор в сценарии закроет оболочку пользователя:

$ cat exit_me.sh
#!/bin/bash
exit

и

$ source exit_me.sh
# or
$ . exit_me.sh

Подробнее о source Вот.

с убийством?

$ kill -HUP `ps -ef |grep $USER|grep bash|awk {'print $2'}`

Изменить: как сказано в комментариях, он лучше работает с PPID

$ kill -HUP $PPID

Это можно сделать, если вы включите EXIT в конце вашего скрипта, который сообщает оболочке bash о завершении.