我package.json
具有這樣它的腳本:指定其外殼採用的紗線運行腳本
"buildTslint": "node_modules/typescript/bin/tsc node_modules/awesomeLibrary_node_tslint/{,helpers/}*.ts",
注意{,helpers/}*.ts
的一部分,這就是所謂的Brace Expansion且只能在bash
,不sh
。
當運行yarn buildTslint
我得到以下輸出:
# 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.
看來,紗線使用sh
執行這些腳本,但我想用bash
關於這個問題,可以使用大括號展開。
'的bash -c '命令..''按預期工作,非常感謝。但是,有沒有設置默認shell的方法,所以在將來不會發生? –
我認爲不是如果它是通過紗線系統調用完成的,它是特定於實現的,並且由於'man 3 exec'' man 3 system'指定了'/ bin/sh' –