出力を印刷せずにzshから.bashrcソース

出力を印刷せずにzshから.bashrcソース

過去にはbashがどこにでもあるので、常にbashを使ってきました。
しかし、最近zshを試してみました。.bashrc私はすべてのサーバーに同期しているファイルの更新を放棄したくありません。だから私は.zshrcコマンドを使って古いものを手に入れました。.bashrcsource ~/.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をエミュレートするように指示するため、デフォルトでは.bashrcksh解析規則が適用されます。 Zshにはbashエミュレーションモードがなく、kshが最も近いです。また、kshエミュレーションモードは、定義された関数の実行時に.bashrc関数評価中に有効になります。

これがzshで読む問題を解決することを願っています。そうでない場合は、ほとんどの場合、両方のシェルでうまく機能するように.bashrc簡単に調整できます。.bashrcまったく異なるプロンプト設定やキーバインディングなど、いくつかの部分を条件付きにしました。

if [[ -z $ZSH_VERSION ]]; then
  bind …
  PS1=…
fi

すべての出力を本当に隠すには/dev/nullsource ~/.bashrc >/dev/null 2>&1)にリダイレクトできますが、お勧めしません。何かが機能していないことを示すエラーを隠すだけなので、コンテンツは機能しません。

おすすめ記事