Skip to content

Latest commit

 

History

History
40 lines (27 loc) · 1.3 KB

shell.md

File metadata and controls

40 lines (27 loc) · 1.3 KB
execa logo

💻 Shell

Avoiding shells

In general, shells should be avoided because they are:

  • Not cross-platform, encouraging shell-specific syntax.
  • Slower, because of the additional shell interpretation.
  • Unsafe, potentially allowing command injection (see the escaping section).

In almost all cases, plain JavaScript is a better alternative to shells. The following page shows how to convert Bash into JavaScript.

Specific shell

import {execa} from 'execa';

await execa({shell: '/bin/bash'})`npm run "$TASK" && npm run test`;

OS-specific shell

When the shell option is true, sh is used on Unix and cmd.exe is used on Windows.

sh and cmd.exe syntaxes are very different. Therefore, this is usually not useful.

await execa({shell: true})`npm run build`;

Next: 📜 Scripts
Previous: 💬 Escaping/quoting
Top: Table of contents