過去にはbashがどこにでもあるので、常に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
トリガされます。
私が望むのは、すべてのstderrとstdout出力を隠して静かに.zshrc
リソースを取得することです。.bashrc
これは可能ですか?どのように?
ベストアンサー1
emulate -R ksh -c 'source ~/.bashrc'
これはzshがロードされたときにkshをエミュレートするように指示するため、デフォルトでは.bashrc
ksh解析規則が適用されます。 Zshにはbashエミュレーションモードがなく、kshが最も近いです。また、kshエミュレーションモードは、定義された関数の実行時に.bashrc
関数評価中に有効になります。
これがzshで読む問題を解決することを願っています。そうでない場合は、ほとんどの場合、両方のシェルでうまく機能するように.bashrc
簡単に調整できます。.bashrc
まったく異なるプロンプト設定やキーバインディングなど、いくつかの部分を条件付きにしました。
if [[ -z $ZSH_VERSION ]]; then
bind …
PS1=…
fi
すべての出力を本当に隠すには/dev/null
(source ~/.bashrc >/dev/null 2>&1
)にリダイレクトできますが、お勧めしません。何かが機能していないことを示すエラーを隠すだけなので、コンテンツは機能しません。