aboutsummaryrefslogtreecommitdiff
path: root/bin/shb.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/shb.sh')
-rw-r--r--bin/shb.sh26
1 files changed, 26 insertions, 0 deletions
diff --git a/bin/shb.sh b/bin/shb.sh
new file mode 100644
index 00000000..7d31876d
--- /dev/null
+++ b/bin/shb.sh
@@ -0,0 +1,26 @@
+# Use PATH to build a shebang for a script given on stdin
+self=shb
+
+# Need at least two arguments
+if [ "$#" -lt 1 ] ; then
+ printf >&2 '%s: Need interpreter command\n' "$self"
+ exit 1
+fi
+
+# First argument is the name of the interpreter
+intn=$1
+shift
+
+# Try and find the path to the interpreter command, bail out if we can't
+if ! intp=$(command -v "$intn" 2>/dev/null) ; then
+ printf >&2 '%s: %s: command not found\n' "$self" "$intn"
+ exit 1
+fi
+
+# Set the positional parameters to the path and any remaining arguments, and
+# squash them together for the shebang line
+set -- "$intp" "$@"
+printf '#!%s\n' "$*"
+
+# Emit the rest of the input
+cat