私はバニヤンのための私の.bashrcにエイリアスを持っている:npmスクリプトからbashエイリアスにパイプする方法はありますか?
$ alias bsh
alias bsh='bunyan -o short'
この行は、bashで正常に動作:
$ coffee src/index.coffee | bsh
をしかし、私は同じ事を置けば 'スクリプト'
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"coffee":"coffee src/index.coffee | bsh"
},
npm run coffee
、失敗する:
> coffee src/index.coffee | bsh
sh: bsh: command not found
events.js:141
throw er; // Unhandled 'error' event
^
Error: write EPIPE
at exports._errnoException (util.js:870:11)
at WriteWrap.afterWrite (net.js:769:14)
ランダムに私は|
の代わりに||
を入れてみました。私はなぜそれを理解することはできません。私が知る限り、JSONのパイプ文字をエスケープする必要はありません。
実際には出力をbshエイリアスにパイプしません。
実際の修正は、"coffee":"coffee src/index.coffee | bunyan -o short"
を使用することです。エイリアスを完全に削除します。
npmスクリプトでbashエイリアスを使用するにはどうすればよいですか?
ません。完全なコマンドを書き出すだけです。エイリアスは対話型シェルで入力を節約するためのものです。スクリプトでは、一度入力するだけです。エイリアス展開は、非対話型シェルではデフォルトではオフになっていますが、オンにすることはできますが、エイリアスが他のシェルから継承されないという問題があります。 – chepner