English 中文(简体)
保存全局变量BASH
原标题:Save Global variables BASH

我是新来的 正在试图解决一些问题 以代号我正在做的。

我在终端 以我的用户名 并连接到bash

USER$  
USER$ bash  
bash$

现在,在狂欢中,我正在节省一些变量f.e.e.:

i=2   
k=2   
let p=$k*$i

现在我要使用Bash 函数以外的变量

bash$exit   
USER$

现在变量已不存在

我尝试使用导出, 但是它没有真正有效, 可以使用我们的帮助, tnx

最佳回答

与 DOS 批量文件不同, Unix shell 脚本不能直接影响其调用 shell 的环境 。

您可以考虑使用 . (dot) 或 源代码 命令在调用 shell 的背景下读取和执行脚本。 这意味着脚本中的修改确实影响环境( 一般来说; 您仍然可以遇到子贝壳的问题 ) 。

另一个选项是将设置变量的脚本设置为将数值写入 name=value 格式的变量写入一个文件,然后调用脚本读取(再次使用 . 源代码)。

问题回答

无法。 您无法在父进程设置环境变量 。

常规解决方案是将设置添加到您的 。 profile . brashrc -- -- 您应该使用这些设置取决于您的具体需求和您的本地 Bash 配置; 我的第一个建议是 . profile , 但随后您必须避免任何blake主义, 因为此文件与 sh 共享( 因此, 没有 < code>let , 例如) 。

对于更具体的需求,请将命令放入文件,当您需要时,请在文件里输入 源代码。您也可以创建一个简单的脚本,用当前值更新文件。

# source this file to update $HOME/stuff

cat<<HERE>$HOME/stuff
i= $i 
k= $k 
p= $p 
export i k p
HERE

这里的语法很简单, 但假设您没有包含单引号或其他自由形式内容的值。 如何安全存储您无法完全控制的任意值是一个复杂得多的讨论; 我为基本使用案例提供了一个简单的解决方案, 您只需要保存几个简单的标值, 比如数字 。

要在连接到远程系统时保留变量,请查看您用来连接的工具的文档。例如, ssh 具有从本地系统导入环境变量的配置选项,用于在启动远程会话时从本地系统导入环境变量。





相关问题
Parse players currently in lobby

I m attempting to write a bash script to parse out the following log file and give me a list of CURRENT players in the room (so ignoring players that left, but including players that may have rejoined)...

encoding of file shell script

How can I check the file encoding in a shell script? I need to know if a file is encoded in utf-8 or iso-8859-1. Thanks

Bash usage of vi or emacs

From a programming standpoint, when you set the bash shell to use vi or emacs via set -o vi or set -o emacs What is actually going on here? I ve been reading a book where it claims the bash shell ...

Dynamically building a command in bash

I am construcing a command in bash dynamically. This works fine: COMMAND="java myclass" ${COMMAND} Now I want to dynamically construct a command that redirectes the output: LOG=">> myfile.log ...

Perform OR on two hash outputs of sha1sum

I want perform sha1sum file1 and sha1sum file2 and perform bitwise OR operation with them using bash. Output should be printable i.e 53a23bc2e24d039 ... (160 bit) How can I do this? I know echo $(( ...

Set screen-title from shellscript

Is it possible to set the Screen Title using a shell script? I thought about something like sending the key commands ctrl+A shift-A Name enter I searched for about an hour on how to emulate ...

热门标签