4

我有一个需要设置环境变量 USER 的脚本。由于脚本被多个用户使用,我不能只export USER=xxx在脚本的开头做。我可以在 中定义crontab,但我只是想知道是否有一种很好的方法可以将其引入。

我尝试了 sourcing.bashrc.profile,但都没有定义 USER,而且在 Ubuntu 上.bashrc只是在非交互式 shell 上返回。

4

3 回答 3

5

您可以通过在脚本顶部编写(Bashism)来解决它:

USER=$(whoami)

或旧式:

USER=`whoami`

...假设您whoami在 中PATH,也可以crontab像几个(大多数?)其他变量一样设置它。即,您也可以crontab自行设置变量(至少在 Vixies 中cron) -例如,请参见此处。

于 2012-11-21T14:25:49.817 回答
4

使用env命令。您的 crontab 条目可能如下所示:

* * * * * env USER=foouser /path/to/script.sh
于 2012-11-21T14:59:48.090 回答
0

您可以在命令之前指定环境变量。这样,它不会影响 crontab 中的任何其他内容。

用户.sh:

#!/bin/sh
echo $USER

客户端:

USER=foo ./user.sh ## outputs "foo"
于 2012-11-21T13:40:25.440 回答