意外的 nohup 行为

Unexpected nohup behaviour

我有一个可执行文件test,它包含

a="$RANDOM"
echo "$a">>out

现在,如果我只是 ./test,那么 out 包含一个随机数。但是如果我 nohup ./test & 那么 out 是空的。为什么?

正在将评论转为答案

您在使用 Ubuntu(或其他 Linux 发行版)吗? /bin/sh 是 link 到 /bin/dash 而不是 /bin/bash?如果是这样,当你 运行 它与 bash 作为你的 shell 时,那么 $RANDOM 工作,但是当 nohup 运行 它与 /bin/sh(又名 dash),你什么也得不到。

您可以使用 #!/bin/bash 作为 shebang 行来修复它。

Actually I'm on Debian. But anyway I forgot the shebang indeed; now it works perfectly.

太棒了!

顺便说一下,不管它多么诱人,调用程序 test 通常不是一个好主意,因为有一个 shell 内置程序称为 test(也称为 [) 如果它是 运行 而不是您的测试程序,则很容易引起混淆。