小编NoI*_*ame的帖子

std::system 使用什么 shell?

TL;博士; 我猜使用的外壳std::systemsh. 但是,我不确定。

我尝试使用以下代码打印 shell:std::system("echo $SHELL"),输出为/bin/bash。这对我来说很奇怪。所以,我想看看,如果我这样做会发生什么sh?并且,相同的输出:/bin/bash。另外,如果我使用像 , 这样的命令SHELL="/usr/bin/something"将变量设置SHELL为另一个字符串,它将打印我设置给它的新字符串 ( /usr/bin/something),并且看起来这不是查看它正在使用的 shell 的好方法。然后,我尝试使用命令检查它ps,输出为:bash, a.out, ps。在这个列表中看到它很奇怪bash。因此,我创建了一个自定义 shell,并将 gnome-terminal 中的 shell 更改为它:

#include <iostream>

int main()
{
    std::string input;
    while (true)
    {
        std::string command;
        std::getline(std::cin, command);
        std::system(command.c_str());
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,测试更容易了,而且我认为结果更好。

然后,我尝试ps再次测试该命令,但在自定义 shell 中,结果是:test_shell, ps

又奇怪了。外壳怎么不是sh,也不是bash?而且,我所做的最终测试是:echo $0sh …

c++ linux bash shell sh

6
推荐指数
1
解决办法
1088
查看次数

标签 统计

bash ×1

c++ ×1

linux ×1

sh ×1

shell ×1