脚本在子shell中运行,而不是与调用脚本运行相同的shell

时间:2017-01-13 08:20:41

标签: linux bash shell

我有使用nohup调用shell B的shell A.

SHELL A:

echo "\r\n OS1 : $BASH \r\n"
echo "\r\n OS2 : $SHELL \r\n"

$scriptB="B.sh"

(
  nohup sh $scriptB $* >> test.log 2>&1
  echo process finalized
  exit
)

SHELL B:

echo "\r\n OS1 : $BASH \r\n"
echo "\r\n OS2 : $SHELL \r\n"

在shell A中我得到了回声结果:

OS1 : /usr/bin/bash
OS2 : /usr/bin/sh

在shell B中我得到了回声结果:

OS1 : 
OS2 : /usr/bin/sh

为什么bash在通话中被清空了?如何在下标中继续使用bash?

这导致我在bash中可用但不是sh

的某些命令中出现语法错误

1 个答案:

答案 0 :(得分:0)

试试这个:

档案 A.sh

echo "\r\n OS1 : $BASH \r\n"
echo "\r\n OS2 : $SHELL \r\n"

(
  nohup sh ./B.sh $* >> test.log 2>&1
  echo process finalized
  exit
)

并保持文件B不变,它为两者打印出相同的输出。