Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获得Zsh';Swift脚本中的别名命令?_Swift_Macos_Shell_Zsh - Fatal编程技术网

如何获得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: