使用 bash shell,您可以在合成DEBUG信号上安装陷阱。这很有用,并且会在每个 shell 命令上执行您的函数或代码。例如:
$ trap 'logger -t shell "${BASH_COMMAND}"' DEBUG
Run Code Online (Sandbox Code Playgroud)
例如,这里的想法是将陷阱安装在放入的文件中,/etc/profile.d/bash-logger并让任何用户 shell 会话命令在发生时自动记录到系统日志中。这对于轻松跟踪远程命令也很有用。
查看 dash shell 源代码,我似乎明白没有这样的DEBUG信号可用。
是否有任何解决方法或替代方法可以使用破折号外壳实现相同的结果?
我安装的是 Ubuntu 20.04。我似乎无法使用 来获取文件sh,这是 Ubuntu 的默认设置dash。
我有一个文件,build.env其中包含一些环境变量,如下所示:
构建环境:
SOMEVAR=something
A_VAR=some_value
Run Code Online (Sandbox Code Playgroud)
. build.env我可以使用或在 bash 上获取它source build.env。但是,如果我尝试. build.env使用 sh,我会得到
sh: 1: .: build.env: not found.
Run Code Online (Sandbox Code Playgroud)
我可以stat或cat该文件,但我无法获取它的来源。为什么?
在Debian上挤。运行ps -p $$showbash是我当前的 shell,ls -l $(which sh)showssh是到bash. 那么,为什么当我运行时man sh,我会得到 的手册页dash?这只是 Debian 中的一个错误吗?