exec
The proto exec <tools...> -- <command>
(or proto x
) command will activate a temporary
environment by loading and initializing any number of tools, and then execute an arbitrary command
within that environment.
$ proto exec node pnpm -- pnpm run dev
Tools will automatically detect a version to execute with based on loaded .prototools
, but the
version can be provided inline by suffixing the tool with @<version>
.
$ proto exec node@24.2 pnpm@10 -- pnpm run dev
Shell support
By default, the command will not be executed in a shell, and will be excuted in the context of the
parent process. If you want to execute the command within a shell (using -c
), you can use the
--shell
option.
$ proto exec node pnpm --shell bash -- <command>
If your command contains special characters, complex expressions, or shell specific syntax, you may
need to pass --raw
to avoid quoting/escaping issues.
$ proto exec node pnpm --shell bash --raw -- <command>
Furthermore, if you want to launch an interactive shell session with the activated environment, you can pass the shell command itself as the exec command.
$ proto exec node pnpm -- bash
Arguments
<tools...>
- List of tool identifiers with optional version.<command>
- Command to execute within the environment. Must be passed after a--
separator.
Options
--tools-from-config
- Inherit tools to initialize from.prototools
configs, instead of passing an explicit list.--raw
- Execute the command as-is without quoting or escaping when using--shell
.--shell
- Shell to execute the command with (e.g.bash
orpwsh
).