如何在点源时调用全局命令

How to invoke global commands while dot sourced

示例:

dot sourcing openssl.exe 在其上下文中调用命令

. .\openssl.exe
OpenSSL> version -a

生成版本信息

如果我想用传统的 cls 清除屏幕,它将尝试在 OpenSSL.

的上下文中调用它

如何从 previous/non-dot 源上下文中调用 cls。除此之外,您甚至可以 "step back" 来自点采购吗?

我相信您最好在 non-interactive 模式下执行您的命令:. .\ openssl.exe version -a。这将吐出版本信息,然后将您留在 shell 中。有些程序在交互模式下有命令调用 shell 命令(想到 MySQL ),但看起来 OpenSSL 不支持它。您可以退出交互模式并使用 quit 命令返回您的 shell。

您正在调用交互式 openssl 会话。在该会话中,您可以 运行 OpenSSL(子)命令,但不能使用 PowerShell cmdlet(因为环境现在是 OpenSSL,而不是 PowerShell)。通过 quitopenssl 退出以返回 PowerShell。

Dot-sourcing 在这里没有提供任何好处,顺便说一句。您可以简单地 运行 .\openssl 得到相同的结果。

您还可以 运行 openssl non-interactively 通过在命令行上提供子命令:

.\openssl version -a