Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
Shell 包括bash“;脚本“;脚本中的命令_Shell_Logging_Include - Fatal编程技术网

Shell 包括bash“;脚本“;脚本中的命令

Shell 包括bash“;脚本“;脚本中的命令,shell,logging,include,Shell,Logging,Include,在每次执行某项任务之前,我需要在shell中设置一些变量并格式化shell提示符。我还需要记录我的行为 目前,我正在运行一个脚本,收集它需要的所有信息(部分由用户输入),并设置新的shell提示符和变量。然后,我用脚本$var actionlog-$anothervar-1.log开始录制。使用的变量是在调用my_script.sh期间设置的。然后,由于script命令生成了一个新的shell,我需要再次调用source my_script.sh 是否有一种方法可以将脚本部分直接包含在我的脚本.

在每次执行某项任务之前,我需要在shell中设置一些变量并格式化shell提示符。我还需要记录我的行为

目前,我正在运行一个脚本,收集它需要的所有信息(部分由用户输入),并设置新的shell提示符和变量。然后,我用
脚本$var actionlog-$anothervar-1.log
开始录制。使用的变量是在调用
my_script.sh
期间设置的。然后,由于script命令生成了一个新的shell,我需要再次调用
source my_script.sh


是否有一种方法可以将
脚本
部分直接包含在
我的脚本.sh
中,这样我就不必输入所有内容两次

您可以在初始设置脚本中使用
export
,将局部变量设置为全局变量。例如,您的设置脚本,
my_script.sh
可以是:

#!/bin/sh
# A startup script

export var="world"
export PS1="\u@\h \w> "

echo "Please enter a number, followed by [ENTER]:"
read num

export anothervar="$num"

script $var-actionlog-$anothervar-1.log
然后,脚本启动后,确认您可以运行:

echo var=$var, anothervar=$anothervar

如果要在
my_script.sh
中设置不同的shell提示符(
$PS1
),以供typescript使用,请确保未在
~/.bashrc
中设置
$PS1
。类型脚本,
script$var actionlog-$anothervar-1.log
,每次都调用
~/.bashrc
,并将覆盖提示变量,
$PS1
。要仅设置登录shell的提示,请在
~/.bash\u login
中进行设置

太好了,谢谢!这几乎奏效了。只有Shell提示没有按照脚本中的定义进行设置。脚本是否可能生成具有特定shell提示符的shell?我不想一直使用这个shell提示符,所以最好不要在
~.bash\u login
中设置它。您的
$PS1
是否在~/.bashrc中设置?如果是这样的话,您将需要删除原始配置文件并将其移动到/etc/bashrc或bash_配置文件中。看看这个。否则,如果在脚本中设置了
$PS1
,它应该可以工作。