app*_*496 2 shell bash shell-script docker alpine-linux
~/.bashrc我知道、~/.bash_profile、/etc/profile和之间的区别/etc/bash.bashrc。除了 之外/etc/profile,这些都是特定于bashshell 的。
我希望每次以任何用户身份打开非登录(交互式或非交互式)shell 时都运行一个脚本,但不是 for bash、 for sh。我的目标是拥有一个每次docker exec ... /bin/sh进入 Alpine Linux 容器时都会运行的脚本。这个容器没有bash。
有没有这样的全局配置文件sh?如果没有,是否可以模仿这种行为?
的行为sh由 POSIX 指定。Linux 系统可能有多种用作 的 shell /bin/sh,包括但不限于 bash、dash、mksh 或 ash,虽然其中每一个可能都有用于实现这种情况下的行为的自定义机制,但您唯一可以依赖的POSIX 指定了所有这些内容。
指定交互使用的配置文件的方法sh是将环境变量设置ENV为该文件的名称。除此之外,POSIX 不为非登录 shell 提供标准文件。POSIX 的文本如下:
当且仅当调用交互式 shell 时,该变量应由 shell 进行参数扩展(请参阅参数扩展),并且结果值应用作包含要在当前环境中执行的 shell 命令的文件的路径名。该文件不必是可执行的。如果 的扩展值
ENV不是绝对路径名,则结果未指定。ENV如果进程的真实有效用户ID或真实有效组ID不同,则忽略。
如果您需要非交互式 shell 的命令,则需要将它们作为命令行上的参数提供。