Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何让bash子shell继承父';什么是设置选项?_Linux_Bash - Fatal编程技术网

Linux 如何让bash子shell继承父';什么是设置选项?

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 [[ $- =

假设我在脚本“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 [[ $- = *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