如何获得Zsh';Swift脚本中的别名命令?
我在如何获得Zsh';Swift脚本中的别名命令?,swift,macos,shell,zsh,Swift,Macos,Shell,Zsh,我在~/.zshrc中添加了许多自己的别名,以便在macOS上使用Zsh。 我发现我可以使用alias命令来显示注册的别名 % alias myalias1='cd ...' myalias2='cp ...' myalias3='mv ...' myalias4='find ...' ... 我想在Swift脚本中使用它,所以我创建了以下程序。 但是,虽然正确执行了pwd和ls命令,但是alias命令不会输出任何内容 //shell.swift 进口基金会 @可丢弃结果 func shell
~/.zshrc
中添加了许多自己的别名,以便在macOS上使用Zsh。我发现我可以使用
alias
命令来显示注册的别名
% alias
myalias1='cd ...'
myalias2='cp ...'
myalias3='mv ...'
myalias4='find ...'
...
我想在Swift脚本中使用它,所以我创建了以下程序。但是,虽然正确执行了
pwd
和ls
命令,但是alias
命令不会输出任何内容
//shell.swift
进口基金会
@可丢弃结果
func shell(u参数:字符串…)->Int32{
让任务=进程()
task.launchPath=“/usr/bin/env”
task.arguments=args
task.launch()
task.waitUntilExit()
return task.terminationStatus
}
打印(“---运行pwd命令:”)
壳牌(“pwd”)
打印(“---运行ls命令:”)
壳牌(“ls”)
打印(“---运行别名命令:”)
壳牌(“别名”)
我很难理解造成这种情况的原因。如果有解决办法,请告诉我 谢谢
(我用翻译工具问了这个问题。)在
zsh
中,如果运行哪个别名
,就会得到别名:shell内置命令
。虽然在/usr/bin/alias
中确实存在一个真正的可执行文件,但在zsh
中运行alias
命令时运行的不是该代码。它内置于zsh
本身
通过运行/usr/bin/env alias
,您可以重新创建Swift代码正在执行的操作。在我的例子中,我得到了一个空输出
您要做的是编辑Swift代码以运行zsh
,并在zsh
中运行alias
。相当于/bin/zsh-l-c“别名”
试着运行
shell(“zsh”、“-l”、“-c”、“alias”)
我运行了您提供的命令,它显示了一些默认注册的别名。但是,我添加到我的~/.zshrc
中的别名没有显示。嗯,这就是-l
标志的用途,我以为它会成为一个登录shell(应该是源代码~/.zshrc
),但它看起来不是。试试/bin/zsh--login-c“alias”
我得到了同样的结果。我试图在~/.zshrc
中编写echo“hello”
,但它没有输出。我在~/.zprofile
中编写了echo“hello2”
,输出了hello2
。似乎未加载~/.zshrc
。.zshrc
仅由交互式shell提供。您还需要将-i
选项添加到命令调用中。在终端中运行zsh-l-i-c alias
可以得到理想的结果。但是在Swift脚本上运行shell(“zsh”,“l”,“i”,“c”,“alias”)
,shell将提示输入,并且不会继续。
% 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: