Làm cách nào tôi có thể đặt các biến môi trường cho một chương trình được thực thi bằng cách sử dụng `nohup`?


10

(Tôi đang chỉnh sửa tập lệnh Bash hiện có, vì vậy tôi có thể mắc một lỗi ngớ ngẩn ở đây ...)

Tôi có một tập lệnh shell lưu một lệnh với biến môi trường làm đối số của nó như sau:

COMMAND="mvn clean install -P $MAVEN_PROFILE"

Sau đó, nó thực thi lệnh với nohupkhoảng như sau:

nohup $COMMAND > logfile

Những công việc này.

Bây giờ, tôi muốn đặt một biến môi trường có thể được truy cập trong Maven. Tôi đã thử một vài thứ như sau:

COMMAND="FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"

... nhưng sau đó nó chỉ chấm dứt với:

nohup: failed to run command `FORMAVEN=valueForMaven': No such file or directory

Tôi cảm thấy như có một số khái niệm không liên quan tại nơi làm việc ở đây, không có khái niệm nào tôi hiểu hoặc thậm chí không biết. Tôi cần gì để có thể làm những điều trên?

Câu trả lời:


19

Ba phương pháp:

  • đặt (và xuất) biến trước khi khởi chạy mvn

  • Đặt biến khi khởi chạy nohup:

    FORMAVEN=valueForMaven nohup $COMMAND > logfile
  • sử dụng env để đặt biến

    COMMAND="env FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"

Thông minh! Tôi biết rằng nó phải dễ dàng hơn những chỉ dẫn mà tôi đang nghĩ đến ...
Vincent

Tại sao tôi không bao giờ nhận ra rằng nó đơn giản như xuất khẩu THEN chạy lệnh ??? Cảm ơn!
cristianoms
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.