后台方式执行命令时,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" delare -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 ![]() $PATH 前面那个 \ 很可疑 |
![]() | 2 liangkang1436 2023-10-28 19:14:17 +08:00 via Android ![]() 这两种方式加载的配置文件不一样,具体差别,看这篇博客 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 ![]() |
6 julyclyde 2023-10-28 21:21:50 +08:00 ![]() @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 文件中定义了这个变量(也不知道啥时候创建的这个文件)捂脸。。 |