Bagaimana saya bisa mengatur variabel lingkungan untuk program yang dieksekusi menggunakan `nohup`?

10

(Saya mengedit skrip Bash yang ada, jadi saya mungkin membuat kesalahan konyol di sini ...)

Saya memiliki skrip shell yang menyimpan perintah dengan variabel lingkungan sebagai argumennya seperti ini:

COMMAND="mvn clean install -P $MAVEN_PROFILE"

Itu kemudian mengeksekusi perintah dengan nohupkira - kira sebagai berikut:

nohup $COMMAND > logfile

Ini bekerja.

Sekarang, saya ingin mengatur variabel lingkungan yang dapat diakses di Maven. Saya sudah mencoba beberapa hal seperti berikut:

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

... tapi kemudian berakhir dengan:

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

Saya merasa ada beberapa konsep yang tidak berhubungan yang bekerja di sini, tidak ada yang saya mengerti atau bahkan tahu tentang. Apa yang harus saya lakukan di atas?

Vincent
sumber

Jawaban:

19

Tiga metode:

  • set (dan ekspor) variabel sebelum meluncurkan mvn

  • setel variabel pada peluncuran nohup:

    FORMAVEN=valueForMaven nohup $COMMAND > logfile
  • gunakan env untuk mengatur variabel

    COMMAND="env FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE"
Pemrogram
sumber
Luar biasa! Saya tahu itu harus lebih mudah daripada arah yang saya pikirkan ...
Vincent
Kenapa saya tidak pernah menyadari bahwa itu sesederhana mengekspor maka menjalankan perintah ??? Terima kasih!
cristianoms