如何使Python脚本在退出shell时从shell中注销?

如何使Python脚本在退出shell时从shell中注销?,python,bash,shell,Python,Bash,Shell,我正在用Python为bash编写一个shell脚本。当用户登录帐户时,脚本会自动运行,我希望它在用户退出时将其注销。我尝试使用os.system('exit'),但它不起作用。我该如何做到这一点?你可以做一些肮脏的事情,比如杀死父母: os.kill(os.getppid(), 9) 可以调用它,但它将是不干净的,因为这将导致进程也死亡。将python脚本设置为用户的登录shell(在/etc/passwd/)。这样,她将在脚本退出后自动注销。当用户登录帐户时,脚本将自动运行-如何?您的问题

我正在用Python为bash编写一个shell脚本。当用户登录帐户时,脚本会自动运行,我希望它在用户退出时将其注销。我尝试使用os.system('exit'),但它不起作用。我该如何做到这一点?

你可以做一些肮脏的事情,比如杀死父母:

os.kill(os.getppid(), 9)

可以调用它,但它将是不干净的,因为这将导致进程也死亡。

将python脚本设置为用户的登录shell(在/etc/passwd/)。这样,她将在脚本退出后自动注销。

当用户登录帐户时,脚本将自动运行-如何?您的问题暗示它是从bash运行的。虽然我同意@Fredrick Roth的建议,但另一种方法是使用以下命令从shell运行Python脚本:

exec script-name.py

exec
命令替换当前程序,因此
bash
将被
python
替换。当Python脚本结束时,将没有可返回的shell。

您可能会杀死您登录的tty

这可能会奏效


它是一个在tty中注销特定用户的脚本

也许可以尝试
os.system(“注销”)
。我不太确定这会起作用,尽管我尝试了,但我得到了“sh:logout:not found”。请执行
哪个logout
以确定
logout
命令的位置。它应该返回一个dirpath。打电话到
os.system
,你的问题有答案吗?如果是:如果你能接受一个答案就好了。