gpt4 book ai didi

linux - Unix 环境变量未设置为远程执行

转载 作者:太空宇宙 更新时间:2023-11-04 09:38:10 25 4
gpt4 key购买 nike

我有 shell 脚本调用 test.sh,它包含

echo 'welcome'
echo $inf_user

当我在 unix box 上运行这个脚本时输出是

welcome

myusername

但是当我使用 plink 运行这个脚本时,我的输出是

welcome

如你所见,它只显示欢迎,不再显示我的用户名

请帮忙

我的 plink 命令是 -plink.exe -ssh user@hostname -l user -pw password -m c:/myfile/file.txt 主机名

和file.txt 包含

#!/bin/sh
/folder1/folder2/test.sh

最佳答案

问题是,当您实际登录到您的服务器时,您还加载了诸如 $inf_user 之类的环境变量。但是当 plink.exe 连接时,我猜它不会启动一个真正的 SSH session 来加载用户配置文件和相关的环境变量。

如何解决这个问题取决于设置和安装要求。不熟悉如何设置 $inf_user,但也许你可以这样做;我以本地 Mac OS X 设置为例。首先登录远程 Unix/Linux 服务器并输入以下内容:

echo $PATH;

输出应该是这样的:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

现在,在远程主机上的脚本中,将基于该输出的这一行添加到文件顶部:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

这将强制脚本使用 PATH 作为 $PATH

此外,由于 $inf_user 不是标准的 Unix/Linux 变量,它可能是在 .bashrc.profile 中设置的> 在远程系统上。因此,您可能想在那里查看是否有任何可以复制的变量。

除此之外,我不是 100% 确定 plink.exe 是如何工作的,但是 file.txt 可能更适合 bash 像这样:

#!/bin/bash
/folder1/folder2/test.sh

我有一种奇怪的感觉,当您登录时您使用的是 bash shell,但是这个脚本使用的是基本的 sh shell,这可能会导致这个问题好吧。

关于linux - Unix 环境变量未设置为远程执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24337731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com