[英]How to get the output of Zsh's alias command in Swift script?
我在~/.zshrc
添加了很多我自己的别名,以便在 macOS 上使用 Zsh。
我发现我可以使用alias
命令来显示注册的别名。
% alias
myalias1='cd ...'
myalias2='cp ...'
myalias3='mv ...'
myalias4='find ...'
...
我想在 Swift 脚本中使用它,所以我创建了以下程序。
但是,虽然pwd
和ls
命令正确执行,但alias
命令不会 output 任何东西。
// shell.swift
import Foundation
@discardableResult
func shell(_ args: String...) -> Int32 {
let task = Process()
task.launchPath = "/usr/bin/env"
task.arguments = args
task.launch()
task.waitUntilExit()
return task.terminationStatus
}
print("--- run pwd command:")
shell("pwd")
print("--- run ls command:")
shell("ls")
print("--- run alias command:")
shell("alias")
% swift shell.swift
--- run pwd command:
/Users/myname
--- run ls command:
Applications Documents Library Music Public
Desktop Downloads Movies Pictures shell.swift
--- run alias command:
我无法理解其原因。
请让我知道是否有解决方案。
谢谢。
(我用翻译工具来问这个问题。)
在zsh
中,如果你运行which alias
,你会得到alias: shell built-in command
。 虽然/usr/bin/alias
确实存在一个真正的可执行文件,但它不是在zsh
中运行alias
命令时运行的代码。 它内置于zsh
本身。
您可以通过运行/usr/bin/env alias
重新创建 Swift 代码正在执行的操作。 就我而言,我得到了一个空的 output。
您要做的是编辑您的 Swift 代码以运行zsh
,并在zsh
中运行alias
。 相当于/bin/zsh -l -c "alias"
。
尝试运行shell("zsh", "-l", "-c", "alias")
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.