> Then there is the claim that in bash, all external commands (e.g., > dirname) can be avoided using this tactic: > > case $0 in > */*) EXEC_DIR=${0:%/*} ;; > *) EXEC_DIR=$PWD ;; > esac > > Does that ever work? I think the problem is more than just missing > quotes. It gives me this error: > > 0: %/*: syntax error: operand expected (error token is "%/*") Note the missing colon in the second example: [noland at a90 ~]$ ./mike.sh ./mike.sh: line 3: 0: %/*: syntax error: operand expected (error token is "%/*") EXEC_DIR = -------------- EXEC_DIR = . [noland at a90 ~]$ cat mike.sh #!/bin/bash case $0 in */*) EXEC_DIR=${0:%/*} ;; *) EXEC_DIR=$PWD ;; esac echo EXEC_DIR = $EXEC_DIR echo '--------------' case $0 in */*) EXEC_DIR=${0%/*} ;; *) EXEC_DIR=$PWD ;; esac echo EXEC_DIR = $EXEC_DIR This is using parameter substitution. http://tldp.org/LDP/abs/html/parameter-substitution.html Brock