cara mengatur variabel lingkungan yang menyimpan lintasan bersama dengan variabel env lain tetapi tidak berkembang

0

Saya ingin tahu cara mengatur variabel lingkungan yang menyimpan variabel lingkungan lain tetapi variabel lingkungan ini tidak diperluas ketika saya gema jika saya gunakan eval echomaka harus diperluas.

Seperti yang saya inginkan echo $TEST_HOMEharus menghasilkan/Users/krysto/$PATH/$DATA_DIR

Ciasto piekarz
sumber

Jawaban:

1

Buat TEST_HOMEmenggunakan tanda kutip tunggal untuk mencegah ekspansi bash:

$ TEST_HOME='/Users/krysto/$MYPATH/$DATA_DIR'
$ echo $TEST_HOME
/Users/krysto/$MYPATH/$DATA_DIR

Kemudian, seseorang dapat menggunakan eval untuk mengembangkannya. Sebagai contoh:

$ MYPATH=dir1/dir2
$ DATA_DIR=data/dir
$ eval echo $TEST_HOME
/Users/krysto/dir1/dir2/data/dir

Beberapa catatan: Konvensi adalah bahwa variabel sistem yang penting, seperti PATHatau HOME, semuanya huruf besar. Jika Anda ingin menghindari menimpa salah satunya, buat variabel Anda menjadi huruf kecil. Secara khusus, PATH utama bisa membuat shell Anda sebagian besar tidak berfungsi.

John1024
sumber
1

Hanya melarikan diri dari variabel (tidak membuat perbedaan jika lokal atau env), mis

> test="echo something"
> test1="\$test"
> echo $test1
$test
> eval $test1
something
BroSlow
sumber