2013-10-17 24 views
9

Tôi đang chạy tập lệnh runonce.sh, người gọi một tập lệnh setup.sh khác qua cron. Chúng tôi coi trường hợp này là trường hợp lý tưởng, nơi không đặt biến môi trường TERM. " được nhìn thấy trong đầu ra của script runonce.sh.cách xóa "biến môi trường TERM không được thiết lập"

Bây giờ tôi đang đối mặt với một vấn đề mà một tập lệnh đơn giản thứ ba - upgradeAndTest.sh khi các cuộc gọi setup.sh, thời gian đó cũng "TERM biến môi trường không được thiết lập." được nhìn thấy trong đầu ra của tập lệnh upgradeAndTest.sh. Tại sao vậy ..?

Ngoài ra, nếu tôi chuyển hướng stderr của setup.sh đến stdout trong tập lệnh gọi thì cũng "biến môi trường TERM không được đặt". hiển thị trên bảng điều khiển.

Có thể bất kỳ ai giúp tôi xóa dòng này khỏi tập lệnh gọi điện không ..?

Trả lời

25

Chạy chương trình yêu cầu thiết bị đầu cuối qua cron có thể dẫn đến sự cố; nó sẽ không có một thiết bị đầu cuối khi nó được điều hành bởi cron.

Trong trường hợp nghi ngờ, tuy nhiên, đảm bảo rằng các biến được đặt trong kịch bản, bằng cách thêm một dòng:

export TERM=${TERM:-dumb} 

Nếu biến môi trường TERM đã được thiết lập, đây là một không-op. Nếu không, thiết bị sẽ đặt thiết bị đầu cuối thành thiết bị chuẩn với khả năng tối thiểu - điều này thỏa mãn chương trình than phiền về TERM không được thiết lập.

+0

Giải pháp tuyệt vời, rất sạch sẽ. Cảm ơn bạn! –

Các vấn đề liên quan