1
我想在Bash脚本中执行Zsh函数命令。下面是一个例子:如何在Bash脚本中执行Zsh shell命令
〜/ .zshrc
hello() {
echo "Hello!"
}
hello.sh
#!/bin/bash
hello
在上面的zsh bash脚本执行
(zsh) $ ./hello.sh
hello command not found
我也试图与here文档:
#!/bin/bash
/bin/zsh - <<'EOF'
hello
EOF
用heredocs执行上面的脚本也说命令未找到错误。
有什么建议吗?
谢谢!
防守运行命令在你的bash脚本中的函数。调用脚本中'.zshrc'中定义的函数有什么意义?你永远不应该这样做(即使在Zsh脚本中,除非你有合理的理由)。而且,如果你足够深入,bash和zsh并不完全兼容。 – 4ae1e1
一个有效的例子是virtualenwrapper的workon命令。即使你在bash中定义了相同的函数或源代码,当前的zsh shell也不会被给定的虚拟环境所反映。 – abhiomkar
如果你需要当前的shell环境,你可以使用一个函数(而不是脚本;当然这个函数可以保存在一个文件中并且来源)或者传递环境变量(或者作为命令行参数)。在非交互式脚本中采购交互式init文件在任何情况下都是不好的做法,更不用说shell不兼容问题了。 – 4ae1e1