使用 Qt 获取当前的 macOS shell

Posted

技术标签:

【中文标题】使用 Qt 获取当前的 macOS shell【英文标题】:Get the current macOS shell using Qt 【发布时间】:2021-12-16 22:24:25 【问题描述】:

根据this我可以使用这个命令得到它:

dscl . -read ~/ UserShell

所以,我用Qt写了这段代码:

QProcess p;
p.setProcessChannelMode(QProcess::MergedChannels);
p.start("dscl", QStringList() << "." << "-read" << "~/" << "UserShell");
p.waitForFinished();
auto result = QString::fromUtf8(p.readAll());

但是,result 是空的。我究竟做错了什么?此命令在终端应用程序中运行良好。

补充 #1。这行得通,但看起来很愚蠢:)

p.start("bash", QStringList() << "-c" << "dscl . -read ~/ UserShell")

【问题讨论】:

使用QProcess::start 的重载将绕过shell,这意味着~/ 令牌不会扩展。您需要自己执行该扩展。 【参考方案1】:

我认为唯一的选择是自己扩展~。所以像......

p.start("dscl", QStringList() << "." << "-read" << QDir::homePath() << "UserShell");

【讨论】:

以上是关于使用 Qt 获取当前的 macOS shell的主要内容,如果未能解决你的问题,请参考以下文章

macOS shell 编程记

shell脚本获取MD5值

macOS Mojave 美化一下终端

sh [sh - 获取当前用户]获取当前登录用户#macOS #Bash

使用 C++\Qt 从当前窗口中获取选定的文本

在shell中怎么获取当前日期和时间