我刚刚加入了一个新团队,环境设置脚本使用了export -f
其中的命令。尽管顶部有一个 bash shebang,但似乎export
调用的命令是来自 zsh 的命令,因此该-f
选项不起作用。有没有办法解决这个问题,或者我必须使用 bash?
答案1
Zsh 不支持导出函数,而且很可能永远都不支持。几年前的 shell shock 漏洞就表明,这不是一个聪明的功能。函数自动加载是一种更好的方法。
环境设置文件通常必须被引用 - 内联在现有的 shell 实例中,因此 shebang 会被忽略。最好说服您的团队坚持使用可移植功能。函数可以放在目录中,并为 bash 提供来源或为 zsh 自动加载。
或者如果确实有必要为导出创建一个临时函数包装器以忽略 -f,使用disable export
源 bash 设置,然后重新启用 zsh 的导出。
答案2
如果您最终来到这里是因为 Google 认为这是“最佳结果”,那么接受的答案更多的是主观意见而不是帮助。我本来要将其标记为重复,但找到的答案是在 unix stackexchange 上。@davidpostill 也在问题中发布了这个,但我通常会立即浏览到答案部分。真正的答案。它还包含一个关于 2014 年 Shell Shock 漏洞的 wiki 链接,该漏洞至今仍未修复。