为非登录 shell 运行“注销脚本”

ico*_*ast 2 bash logout

我有一个.bash_logout脚本,我已经将它放在我用于开发的 VM的vagrant和root用户的主目录中(正如您已经猜到的那样,使用Vagrant 创建)。

该脚本将我所有重要的点文件复制到一个在主机操作系统和来宾操作系统之间共享的目录中,以便我可以轻松地将它们签入我的 Git 存储库、跟踪更改并更轻松地继承我在将一个 VM 配置到另一个 VM。

我遇到的问题(您可能也猜到了)是脚本永远不会为root用户运行,因为我su是root而不是以root身份登录。

无论如何,每次exit您通过suing输入另一个用户进入 shell时,是否都运行脚本?我想从技术上讲不是注销脚本,但在精神上几乎相同。

小智 6

你可以su像这样创建一个登录shell :

su - [user]
Run Code Online (Sandbox Code Playgroud)

如果您不想创建登录 shell,则可以使用退出陷阱。

trap_exit() {
    . "$HOME/.bash_logout"
}
trap trap_exit EXIT
Run Code Online (Sandbox Code Playgroud)

将上面的代码放在用户的.bashrc文件中。