ssh 执行时$PATH 变量未替换

196 天前
 thunderbuddy

后台方式执行命令时,PATH 变量为"$PATH:/usr/local/bin",导致很多命令找不到

ssh 登入后再执行,PATH 就正常了,请大家帮忙看看问题在哪呢

aaron@Aaron-PC:~$ ssh 192.168.2.11 'export'
declare -x HOME="/var/services/homes/aaron"
declare -x LOGNAME="aaron"
declare -x MAIL="/var/mail/aaron"
declare -x OLDPWD
declare -x PATH="\$PATH:/usr/local/bin"
declare -x PWD="/volume2/homes/aaron"
declare -x SHELL="/bin/ash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="192.168.2.97 57086 22"
declare -x SSH_CONNECTION="192.168.2.97 57086 192.168.2.11 22"
declare -x USER="aaron"
962 次点击
所在节点    SSH
13 条回复
adoal
196 天前
$PATH 前面那个 \ 很可疑
liangkang1436
196 天前
这两种方式加载的配置文件不一样,具体差别,看这篇博客 https://xiashuo.xyz/posts/devops/bash/bash_config_file_setup/
julyclyde
196 天前
login shell 和 non interactive shell 的区别?
thunderbuddy
196 天前
@julyclyde 是的,交互式的就没问题
Al0rid4l
196 天前
julyclyde
196 天前
@thunderbuddy man bash 看 INVOCATION 那一段
adoal
196 天前
看看是不是某个 rc 文件里写 PATH="$PATH:/usr/local/bin" 的时候用了单引号
thunderbuddy
195 天前
我的是群晖的系统,环境变量检查过了,/etc/profile ,/etc.defaults/.bashrc_profile ,以及~/.zshrc 文件,PATH 变量是正常的,没有包含单引号

执行环境是非登录非交互,没有设置$BASH_ENV 变量,找不出问题了 o(╥﹏╥)o
aaron@Aaron-PC:~$ ssh 192.168.2.11 'echo $-;shopt login_shell'
hBc
login_shell off

@adoal @julyclyde @Al0rid4l @liangkang1436
julyclyde
195 天前
@thunderbuddy ssh 的目标服务器是什么操作系统啊?我觉得你查看的这几个配置文件都好奇怪啊,不太像普通 Linux 的?
julyclyde
195 天前
@thunderbuddy 看看/etc/environments 这个?
thunderbuddy
195 天前
@julyclyde 目标服务器是群晖,木有这个文件
julyclyde
194 天前
那要不你开个 strace -f 吧,从 sshd listen 、accept 、fork 开始看看到底它从哪儿引入这个环境变量的

(我就是觉得有点高射炮打蚊子)
thunderbuddy
190 天前
感谢各位大佬,找到问题了,原来是.ssh 目录下的 environment 文件中定义了这个变量(也不知道啥时候创建的这个文件)捂脸。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/986278

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX