过去,我一直使用 bash,因为它无处不在。
但最近我开始尝试zsh。我不想放弃更新我的.bashrc
文件,它已同步到我的所有服务器。因此,在我的中,我使用命令.zshrc
获取了旧的。.bashrc
source ~/.bashrc
一切都很顺利,除了每次我用 zsh 打开一个新的终端窗口时。
屏幕上有一堆信息提示。它看起来像这样:
pms () {
if [ -n "$1" ]
then
user="$1"
else
user="zen"
fi
python /Users/zen1/zen/pythonstudy/creation/project_manager/project_manager.py $user show "$2"
}
pmcki () {
if [ -n "$1" ]
then
user="$1"
else
user="zen"
fi
python /Users/zen1/zen/pythonstudy/creation/project_manager/project_manager.py $user check_in "$2"
}
zen1@bogon:~|⇒
这些是我的 .bashrc 中的函数定义。它们是由source ~/.bashrc
我的.zshrc
文件触发的。
我想要的是安静地.zshrc
获取我的资源.bashrc
,隐藏所有 stderr 和 stdout 输出。
可以这样做吗?如何?
答案1
emulate -R ksh -c 'source ~/.bashrc'
这告诉 zsh 在加载时模拟 ksh .bashrc
,因此它基本上会应用 ksh 解析规则。 Zsh 没有 bash 模拟模式,ksh 是最接近的。此外,当执行 中定义的函数时.bashrc
,在函数评估期间也会启用 ksh 仿真模式。
希望这能解决您在 zsh 读取.bashrc
.如果没有,应该很容易调整你的,.bashrc
这样它在大多数情况下都可以在两个 shell 下正常工作。使一些部分成为有条件的,例如完全不同的提示设置和键绑定。
if [[ -z $ZSH_VERSION ]]; then
bind …
PS1=…
fi
如果您确实想隐藏所有输出,可以将其重定向到/dev/null
( source ~/.bashrc >/dev/null 2>&1
),但我不建议这样做:您只是隐藏了指示某些内容无法正常工作的错误,这并不会使该内容正常工作。