2017-05-04 10 views
0

マイpackage.jsonは、このようなことでスクリプトがあります。は、実行中のスクリプトのシェル糸が使用する指定

"buildTslint": "node_modules/typescript/bin/tsc node_modules/awesomeLibrary_node_tslint/{,helpers/}*.ts",

{,helpers/}*.ts一部を、これはshBrace Expansionと呼ばれ、bashでのみ可能で、されていません。

yarn buildTslintを実行しているとき、私は次のような出力を得る:糸がこれらのスクリプトを実行するためにshを使用していますが、私はブレース展開を使用できるように、このためbashを使用したいと思われ

# yarn buildTslint 
yarn buildTslint v0.22.0 
$ node_modules/typescript/bin/tsc node_modules/awesomeLibrary_node_tslint/{,helpers/}*.ts 
error TS6053: File 'node_modules/awesomeLibrary_node_tslint/{,helpers/}*.ts' not found. 
error Command failed with exit code 2. 

を。

答えて

1

system機能を使用してコマンドを起動することもできます。man 3 systemも参照してください。

strace yarn ... 

systemfork + exec + waitを使用し、幹部の家族の機能は、コマンドがbash -c 'command ..'

に変更することができるのbashを使用する /bin/sh

をシェルを使用しています:コールが使用されているシステムを参照するには

+0

'bashの-c 'コマンド..''作品、どうもありがとう。しかし、デフォルトのシェルを設定する方法はありますか?これは将来起こらないでしょうか? –

+1

糸でシステムコールされているのであれば実装固有のものではなく、 'man 3 exec'' man 3 system'は '/ bin/sh'を指定しているので –

1

Yarnは、スクリプトの実行に使用されるデフォルトのシェルを設定する方法をまだ提供していません。https://github.com/yarnpkg/yarn/issues/4248

しかし、糸はプロセスを生成するためにノードを使用するので、ノード自体が使用するデフォルトのシェルを変更することで回避できます。 Ubuntuで

あなたがroot権限を持っている場合、あなたはdash以外のものを指すようにシンボリックリンク/bin/sh変更することでこれを行うことができ、:WindowsでのGit-bashで

sudo ln -sf /bin/bash /bin/sh

を、あなたが変更することができますCOMSPECの環境変数をC:\Windows\system32\cmd.exe以外に変更しましたが、私はそれを私のために働かせることはできませんでした。

も参照してください:予想通り

関連する問題