The syntax of the shell scripts in *nix systems isn't broken. It's totally, absolutely, insanely broken. So? Why not to use some smalltalk powerful sweetness in shells too? Meet crab: humbler than a coral, yet quite handy, err... clawsly.How to load: take a fresh pharo image and load crab with this: Gofer it wiresong: 'mc'; package: 'Filesystem'; load. Gofer it squeaksource: 'OSProcess'; package: 'OSProcess'; load. Gofer it squeaksource: 'CommandShell'; package: 'CommandShell'; load. Gofer it squeaksource: 'crab'; package: 'FilesystemExtensions'; package: 'crab'; load.Shell script to use it: in your scripts directory put this scripts:crab.sh#! /bin/sh vm='/your/path/to/your/vm/squeak' image='/your/path/to/the/pharo/image/with/crab' for i in "$@" do params="$params \"$i\"" done "$vm" -headless "$image" $1 "$params"crabUI.sh<---- use this when you need to develop and debug your .st script #! /bin/sh vm='/your/path/to/your/vm/squeak' image='/your/path/to/the/pharo/image/with/crab' for i in "$@" do params="$params \"$i\"" done "$vm" "$image" $1 "$params"How to use it: this the real example of muscle.st: [:command| Muscle this username: 'noob'; vm: '/your/path/to/squeak'; image: 'your/path/to/your.image'; ram: '200m'; action: command; doIt ] So, you can do in a terminal these things: sudo crab.sh muscle.st stop sudo crab.sh muscle.st start sudo crab.sh muscle.st restart or sudo crab.sh muscle.st startUI