Đây là công việc định kỳ của tôi:Cron công việc không nhận được các biến môi trường thiết lập trong .bashrc
[email protected]:~$ crontab -l
* * * * * /bin/bash -l -c 'source ~/.bashrc; echo $EDITOR > /tmp/cronjob.test'
và bên ~/.bashrc
tập tin, tôi đã export EDITOR=vim
, nhưng trong /tmp/cronjob.test
tập tin cuối cùng, nó vẫn còn trống rỗng?
Vậy làm thế nào tôi có thể nhận được các biến môi trường (đặt trong .bashrc
tệp) và sử dụng nó trong công việc cron của tôi?
[email protected]:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise
[email protected]:~$ uname -a
Linux dragon 3.2.0-26-generic-pae #41-Ubuntu SMP Thu Jun 14 16:45:14 UTC 2012 i686 i686 i386 GNU/Linux
Nếu sử dụng này:
* * * * * /bin/bash -l -c -x 'source ~/.bashrc; echo $EDITOR > /tmp/cronjob.test' 2> /tmp/cron.debug.res
Trong /tmp/cron.debug.res
:
...
++ return 0
+ source /home/plee/.bashrc
++ '[' -z '' ']'
++ return
+ echo
BTW, các tập tin .bashrc
là một trong những mặc định đi kèm với Ubuntu 12.04, với ngoại lệ mà tôi đã thêm một dòng export EDITOR=vim
.
Nếu tôi không sử dụng các công việc định kỳ, thay vào đó, chỉ trực tiếp làm điều này trên dòng lệnh:
source .bashrc; echo $EDITOR # Output: vim
điều gì xảy ra nếu bạn 'cat ~/.bashrc' vào tệp tạm thời? – Alex
ý của bạn là gì bởi 'cat ~/.bashrc'? Nó có một dòng: 'export EDITOR = vim'. Tôi hỏi tại sao lệnh 'echo' KHÔNG nhận biến môi trường' $ EDITOR'. –
Xin lỗi vì không rõ ràng, trong mục nhập cron, thay vì 'source'ing tệp, hãy sử dụng' cat' để xác nhận rằng nó có thể được đọc bởi 'cron'. – Alex