RHEL8.5 shell“BASH_FUNC_which%%”环境变量导致 K8S Pod 失败

mon*_*mon 8 redhat environment-variables kubernetes

问题

从 8.4 迁移到 RHEL 8.5 后,开始出现 K8S Pod 故障的问题。

spec.template.spec.containers[0].env[52].name: Invalid value: "BASH_FUNC_which%%": a valid environment variable name must 
consist of alphabetic characters, digits, '_', '-', or '.', and must not start with a digit (e.g. 'my.env-name',  or 'MY_ENV.NAME',  or 'MyEnvName1', regex used for validation is '[-._a-zA-Z][-._a-zA-Z0-9]*')
Run Code Online (Sandbox Code Playgroud)

登录 shell 中的env命令显示BASH_FUNC_which%%定义如下。

BASH_FUNC_which%%=() {  ( alias;
 eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot "$@"
}
Run Code Online (Sandbox Code Playgroud)

建议这/etc/profile.d/which2.sh是设置BASH_FUNC_which%%.

  • /etc/profile.d/which2.sh

# shellcheck shell=sh
# Initialization script for bash, sh, mksh and ksh

which_declare="declare -f"
which_opt="-f"
which_shell="$(cat /proc/$$/comm)"

if [ "$which_shell" = "ksh" ] || [ "$which_shell" = "mksh" ] || [ "$which_shell" = "zsh" ] ; then
  which_declare="typeset -f"
  which_opt=""
fi
 
which ()
{
(alias; eval ${which_declare}) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot "$@"
}

export which_declare
export ${which_opt} which
Run Code Online (Sandbox Code Playgroud)

通过删除它,问题得到解决。

问题

请帮助理解BASH_FUNC_which%%RHEL8.5中到底是在哪里设置的,这样做的目的是什么BASH_FUNC_which%%,为什么在RHEL中引入了它。

小智 1

回答第一部分:

输出rpm -q --changes which-2.21-28.el9.x86_64

* Fri Apr 15 14:00:00 2022 Than Ngo <than@redhat.com> - 2.21-28
- Resolves: #2050996, error on login when using ksh as the default shell

* Tue Aug 10 14:00:00 2021 Mohan Boddu <mboddu@redhat.com> - 2.21-27
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
  Related: rhbz#1991688

* Fri May  7 14:00:00 2021 Than Ngo <than@redhat.com> - 2.21-26
- Related: #1940464, fixed unbound variable

* Fri Apr 16 14:00:00 2021 Mohan Boddu <mboddu@redhat.com> - 2.21-25
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937

* Tue Mar 23 13:00:00 2021 Than Ngo <than@redhat.com> - 2.21-24
- fix regression in zsh

* Sun Mar 21 13:00:00 2021 Than Ngo <than@redhat.com> - 2.21-23
- improved which2.sh
Run Code Online (Sandbox Code Playgroud)

可能than@redhat.com可以详细说明发生了什么?或者,既然您使用 RHEL,您可以联系 RedHat 支持吗?