summaryrefslogtreecommitdiff
path: root/examples/scripts/nohup.bash
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scripts/nohup.bash')
-rw-r--r--examples/scripts/nohup.bash51
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/scripts/nohup.bash b/examples/scripts/nohup.bash
new file mode 100644
index 0000000..3781293
--- /dev/null
+++ b/examples/scripts/nohup.bash
@@ -0,0 +1,51 @@
+#
+# BASH VERSION OF nohup COMMAND
+#
+ctype()
+{
+ path=$(builtin type -p $cmd | sed 1q)
+ if [ -n "$path" ]; then
+ echo "$path"
+ return 0
+ else
+ case "$cmd" in
+ */*) [ -x "$cmd ] && { echo "$cmd" ; return 0; } ;;
+ *) case "$(builtin type -t $cmd)" in
+ "") return 1;;
+ *) echo "$cmd" ; return 0;;
+ esac ;;
+ esac
+ fi
+ return 1
+}
+
+trap '' HUP # ignore hangup
+command=$(ctype "$1")
+oldmask=$(umask)
+umask u=rw,og= # default mode for nohup.out
+exec 0< /dev/null # disconnect input
+if [ -t 1 ]; then # redirect output if necessary
+ if [ -w . ]; then
+ echo 'Sending output to nohup.out'
+ exec >> nohup.out
+ else echo "Sending output to $HOME/nohup.out"
+ exec >> $HOME/nohup.out
+ fi
+fi
+
+umask "$oldmask"
+
+# direct unit 2 to a file
+if [ -t 2 ]; then
+ exec 2>&1
+fi
+
+# run the command
+case $command in
+*/*) exec "$@"
+ ;;
+time) eval "$@"
+ ;;
+*) "$@"
+ ;;
+esac