![如何更改 at 命令的默认 shell](https://linux22.com/image/1087548/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20at%20%E5%91%BD%E4%BB%A4%E7%9A%84%E9%BB%98%E8%AE%A4%20shell.png)
当我想延迟执行某个程序时at
,它精确地指示我
warning: commands will be executed using /bin/sh
bash
例如,如何将此默认 shell 更改为?
答案1
请参见这发布在 Unix & Linux Stack Exchange 上的问题。第一句话是:
在 Linux 下,at 总是会警告您它将使用 /bin/sh 而不是您喜欢的 shell 执行指定的命令。您无法隐藏此消息,因为它已硬编码在源代码中。
它还提出了一种解决方法:
您传递的命令由 /bin/sh 解释。如果您愿意,此命令可以是脚本的路径;然后 /bin/sh 将执行脚本程序,从而启动脚本的解释器并解释脚本。脚本的语言完全独立于启动它的程序。因此,例如,如果您想执行 bash 脚本(即以 #!/bin/bash 开头的脚本),只需将脚本的路径传递给 at 并忽略不相关的消息。
因此,要使用bash
而不是 来运行命令sh
,您可以将脚本传递给at
。只要脚本中有 shebang 行,它将由 shebang 指向的任何程序执行。如果您使用#!/bin/bash
,它将由 执行bash
。