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