Execute Shell Command (vuo.app.shell)

Runs a command in a Unix shell.

Command can either be the shell command itself (e.g., echo hi), or it can be a path to a shell script or a command-line executable.

The command runs in a sandbox that permits accessing the network, and reading and writing files in the system’s temporary folder (/private/tmp/). It prohibits reading and writing files anywhere in the user’s home folder. For that reason, this node can’t run most Mac apps with a graphical user interface — use the Launch App node for Mac apps.

This node waits for the command to finish executing, then provides its standard output and standard error streams (the text Output port) and its exit code (Status).

Script interpreters

By default, this node uses BASH to interpret the command. You can use another interpreter by starting the script with a line containing #! and the path to the interpreter.

Languages included with macOS


display dialog "Hello from AppleScript!"


#!/usr/bin/osascript -l JavaScript
console.log("Hello from JavaScript!")

Additional languages

You can install Homebrew, then use Homebrew to install other language interpreters, and use them with Vuo:


(print "Hello from Lisp!")


func main() {
    System.print("Hello from Gravity!");
    return true;


#!/usr/bin/env PATH=/opt/homebrew/opt/ghc/bin runhaskell
main = putStrLn "Hello from Haskell!"


print "Hello from Lua!"


console.log("Hello from node.js!");


#!/usr/bin/env PATH=/opt/homebrew/opt/ocaml/bin ocaml
print_string "Hello from OCaml!";;


echo "Hello from PHP!";

Python 3:

print("Hello from Python!")


print "Hello from Ruby!"


System.print("Hello from Wren!")

Keywords: $(), AppleScript, BASH, CLISP, Gravity, Haskell, JavaScript, Lisp, Lua, OCaml, PHP, Perl, Python, Ruby, Terminal, Unix, Wren, ``, cURL, cli, command line, console, node.js, script, system, text code

Example composition:

Back to vuo.app node set documentation.