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