You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置xterm命令传递环境变量并运行lolo.sh脚本?

解决xterm中传递变量运行shell脚本的问题

嘿,我来帮你捋清楚这个问题~你当前的命令有个关键问题:用分号分隔的命令是在当前shell里依次执行的,而不是在新开的xterm窗口里。也就是说,xterm只是打开了一个新窗口,但后面的FILES2变量定义和lolo.sh执行都是在你原来的终端里跑的,新xterm完全没拿到这个变量,这就导致脚本没法正确读取到FILES2。

下面给你几个正确的实现方式,按需选择:

方式1:直接在xterm中一次性执行带变量的脚本

这是最简洁的方式,用xterm -e参数指定要在新窗口里运行的命令,把变量定义和脚本执行放在同一个子shell中:

xterm -e 'FILES2=/home/lo/plop ./lolo.sh'

解释一下:在命令前直接定义变量(FILES2=/home/lo/plop),这个变量会自动成为后面./lolo.sh执行环境的一部分,不需要额外export——当然你脚本里已经写了export FILES2,这也没问题,只是这里的前置定义已经足够让脚本读取到变量了。

如果你的lolo.sh不在当前工作目录,记得写绝对路径,比如:

xterm -e 'FILES2=/home/lo/plop /path/to/lolo.sh'

方式2:让xterm窗口保留变量(跑完脚本不关闭)

如果你希望新开的xterm窗口里一直存在这个FILES2变量(比如跑完脚本后还想手动执行其他依赖这个变量的命令),可以让xterm启动一个带变量的bash环境:

xterm -e bash -c 'FILES2=/home/lo/plop; export FILES2; ./lolo.sh; exec bash'

这里exec bash会让脚本跑完后,xterm窗口不会关闭,而是保留一个带有FILES2变量的shell环境供你继续操作。

关于你脚本里的export FILES2

脚本里的这行代码是为了让FILES2变量能被脚本里启动的子进程读取到,如果你的脚本只是自己用这个变量,其实不需要export,但加了也不会有问题,反而能兼容后续如果有子进程的场景。

内容的提问来源于stack exchange,提问作者Vonton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:28:41