gpt4 book ai didi

linux - exec not bash process with another bash

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:18 25 4
gpt4 key购买 nike

我正在尝试创建新 session 而无需注销和登录,所以认为 exec 会有所帮助。但是得到了关注

[root@vanhalen ~]# echo $$
46144
[root@vanhalen ~]# exec bash
[root@vanhalen ~]# echo $$
46144

我期望第二个输出的 $$ 值不同,因为新的 bash 进程应该替换旧的。这里的行为是什么?

最佳答案

$$ 是运行 shell 的进程的进程 ID。它只会在创建新进程时发生变化。

来自 bash 联机帮助页,关于 exec:

exec [-cl] [-a name] [command [arguments]]

If command is specified, it replaces the shell. No new process is created. (...)

这意味着 exec 的行为非常像 C 函数 execve 及其各种前端(实际上 shell 很可能使用其中之一)调用进程的图像被替换为描述指定命令的图像,并且 exec 永远不会返回。所有这一切都是在没有产生新进程的情况下发生的;旧的外壳简单地结束了。

不过,在旧进程中运行的新 shell 将运行所有通常的启动 Action (您的 .bashrc 已获取等等)。这对于新 session 是否足够取决于您对“ session ”一词的理解。

关于linux - exec not bash process with another bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29601645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com