在bash中,“set -t”是什么意思?

3
我尝试了测试,但它似乎不能按照手册上说的方式工作-从help set中可以看到:

-t 读取并执行一个命令后退出。

我进行了几个不同的测试:

对于这个测试,在终端上没有输出。

#!/usr/bin/env bash

set -t

echo "test"

对于这个问题,运行它,然后在终端中运行echo $TEST_VAR,显示$TEST_VAR为空。

#!/usr/bin/env bash

set -t

export TEST_VAR="test"
set -t这个命令的真正作用是什么?它可以如何使用,你能给出一个例子吗?

4
使用“-t”选项调用bash。 - Cyrus
4
在子shell中运行export(或任何其他赋值操作)永远不会更改父进程shell中的变量,因此在调用shell终端中测试$TEST_VAR并不特别有意义--无论在何处进行测试,其行为都是相同的,无论是否设置了-t或任何其他标志,这些都是在一个fork()创建的子进程中调用脚本后发生的。 - Charles Duffy
2个回答

4

set -t 会使bash立即退出,因为它成为在退出之前读取和执行的唯一命令。它可能是用于创建临时shell的。有一个使用它的例子,请参见Cyrus在评论中发布的问题


0
针对这个问题,运行它并从终端运行echo $TEST_VAR,会显示$TEST_VAR为空。 #!/usr/bin/env bash set -t export TEST_VAR="test"
当然,因为它在另一个环境中,当您重新打开新的终端时,它仅适用于其第一个终端环境。证明如下:
set -t;>test

重新打开终端,就会有一个新的test文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接