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