我有一个脚本需要设置env变量USER。由于脚本由多个用户使用,因此我不能只在脚本开头执行export USER=xxx
。我可以在crontab
中定义,但我只是想知道是否有一种好方法可以将其拉入。
我尝试采购.bashrc
和.profile
,但都没有定义 USER,加上在 Ubuntu 上.bashrc
只是在非交互式 shell 上返回。
你可以通过在脚本的顶部写下(Bashism)来解决这个问题:
USER=$(whoami)
或旧式:
USER=`whoami`
。假设您在PATH
中有whoami
,也可以像几个(大多数?)其他变量一样在crontab
中设置。也就是说,您也可以在crontab
本身中设置变量(至少在 Vixies cron
中) - 例如,请参阅此处。
使用 env
命令。您的 crontab 条目可能如下所示:
* * * * * env USER=foouser /path/to/script.sh
您可以在命令之前指定环境变量。这样,它不会影响 crontab 中的其他任何内容。
user.sh:
#!/bin/sh
echo $USER
命令行:
USER=foo ./user.sh ## outputs "foo"