Linux 如何让bash子shell继承父';什么是设置选项?
假设我在脚本“a.sh”中执行Linux 如何让bash子shell继承父';什么是设置选项?,linux,bash,Linux,Bash,假设我在脚本“a.sh”中执行set-x,它调用另一个脚本“b.sh” 是否可以让“b.sh”从“a.sh”继承-x选项?如果脚本b脚本a,它们将合并到脚本b中。这可能会也可能不会为你解决问题 就像@devnull所说的,您可以在脚本中使用操作 在a.sh中 。设置值 用b.sh 。设置值 在设置值中 set-x 无论何时调用SETVALUES,这些值都将在该子shell中设置。由于子shell不会继承-x,因此需要更加明确。您可以在将-x与$-特殊参数一起使用时进行测试 if [[ $- =
set-x
,它调用另一个脚本“b.sh”
是否可以让“b.sh”从“a.sh”继承
-x
选项?如果脚本b脚本a,它们将合并到脚本b中。这可能会也可能不会为你解决问题 就像@devnull所说的,您可以在脚本中使用
操作
在a.sh中
。设置值
用b.sh
。设置值
在设置值中
set-x
无论何时调用SETVALUES,这些值都将在该子shell中设置。由于子shell不会继承
-x
,因此需要更加明确。您可以在将-x
与$-
特殊参数一起使用时进行测试
if [[ $- = *x* ]]; then
# Set the option, then *source* the script, in a subshell
( set -x; . b.sh )
else
# Simply run the script; subshell automatically created.
./b.sh
fi
从父级导出,从父级调用的所有脚本将继承其标志
$ cat ./foo
#!/bin/bash -
export SHELLOPTS
set -x
./bar
$
$ cat ./bar
#!/bin/bash -
set -o | grep xtrace
$
$ ./foo
+ ./bar
+ set -o
+ grep xtrace
xtrace on
谢谢你的回答,但是b不会是次shell。当您将其作为命令执行而不是源代码执行时,您知道一种方法吗?@dspjm它不能发生在子shell中。请使用
或源代码调用b.sh
。