后台方式执行命令时,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"
1
adoal 2023-10-28 17:55:54 +08:00 1
$PATH 前面那个 \ 很可疑
|
2
liangkang1436 2023-10-28 19:14:17 +08:00 via Android 1
这两种方式加载的配置文件不一样,具体差别,看这篇博客 https://xiashuo.xyz/posts/devops/bash/bash_config_file_setup/
|
3
julyclyde 2023-10-28 19:52:14 +08:00
login shell 和 non interactive shell 的区别?
|
4
thunderbuddy OP @julyclyde 是的,交互式的就没问题
|
5
Al0rid4l 2023-10-28 20:13:40 +08:00 1
|
6
julyclyde 2023-10-28 21:21:50 +08:00 1
@thunderbuddy man bash 看 INVOCATION 那一段
|
7
adoal 2023-10-28 21:22:06 +08:00
看看是不是某个 rc 文件里写 PATH="$PATH:/usr/local/bin" 的时候用了单引号
|
8
thunderbuddy OP 我的是群晖的系统,环境变量检查过了,/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 |
9
julyclyde 2023-10-29 19:56:17 +08:00
@thunderbuddy ssh 的目标服务器是什么操作系统啊?我觉得你查看的这几个配置文件都好奇怪啊,不太像普通 Linux 的?
|
10
julyclyde 2023-10-29 19:56:58 +08:00
@thunderbuddy 看看/etc/environments 这个?
|
11
thunderbuddy OP @julyclyde 目标服务器是群晖,木有这个文件
|
12
julyclyde 2023-10-30 12:37:23 +08:00
那要不你开个 strace -f 吧,从 sshd listen 、accept 、fork 开始看看到底它从哪儿引入这个环境变量的
(我就是觉得有点高射炮打蚊子) |
13
thunderbuddy OP 感谢各位大佬,找到问题了,原来是.ssh 目录下的 environment 文件中定义了这个变量(也不知道啥时候创建的这个文件)捂脸。。
|