意外的 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
(也称为 [
) 如果它是 运行 而不是您的测试程序,则很容易引起混淆。
我有一个可执行文件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
(也称为 [
) 如果它是 运行 而不是您的测试程序,则很容易引起混淆。