在bash脚本中找到我的.zshrc

时间:2012-01-15 17:09:06

标签: bash osx-lion zsh zshrc

假设我有这个bash脚本(测试):

#!/usr/bin/env bash
source ~/.zshrc

在我的.zshrc中,我有以下内容:

autoload -U compinit
compinit

当我尝试从终端窗口(zsh)运行'bash test'时,我收到错误,说找不到autoload和compinit命令。如果我只是从命令行执行source~ / .zshrc,它可以正常工作。

我正在尝试设置我的开发环境,类似于此blog,但是当脚本尝试并获取.zshrc文件时,它会失败。

任何见解都将受到赞赏。

2 个答案:

答案 0 :(得分:7)

在您的脚本中,您使用bash来运行zsh脚本。您也可以请求python解释器解析perl

在shebang行中将bash更改为zsh或使用bash命令编写脚本。

答案 1 :(得分:2)

它不像python和perl那么糟糕。 bash和zsh都派生自Bourne shell(其行为由POSIX标准化),因此任何用于/bin/sh的脚本都可能适用于bash或zsh。

通常,您的~/.zshrc(顾名思义)旨在与zsh一起使用,并且通常包含特定于zsh的命令,如autoloadcompinit

可以使这些命令成为条件,例如:

if [ "$ZSH_VERSION" ] ; then
    autoload -U compinit
    compinit
fi

但当然这意味着你不会获得这些命令的功能,除非你能想出一种在bash中模拟它们的方法。 (我对这两个命令都不熟悉,所以我无法帮助你。)

(请注意,如果您在bash shell中完成set -uset -o nounset,则会失败。)

但是如果你要同时使用zsh和bash,那么拥有单独的~/.bashrc~/.zshrc文件可能会更有意义,并且每个文件只使用一个shell,它的设计。如果您想避免重复,每个人都可以获取包含常用命令的第三个文件。

(根据评论,你可能一开始就做错了。)