Misalkan saya punya skrip ini
export.bash :
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
Ketika saya menjalankan skrip dan mencoba mengakses $VAR
, saya tidak mendapatkan nilai!
echo $VAR
Apakah ada cara untuk mengakses $VAR
dengan hanya menjalankan export.bash tanpa sumber?
bash
shell
unix
environment-variables
tarrsalah
sumber
sumber
source
ataueval
atau ...)man source
tidak akan berfungsi karenasource
dibangun ke dalam bash, Anda perlu menjalankanhelp source
Jawaban:
Jawaban cepat: Tidak.
Tetapi ada beberapa kemungkinan penyelesaian.
Yang paling jelas, yang telah Anda sebutkan, adalah menggunakan
source
atau.
menjalankan skrip dalam konteks shell panggilan:Cara lain adalah memiliki skrip, daripada mengatur variabel lingkungan, perintah cetak yang akan mengatur variabel lingkungan:
Pendekatan ketiga adalah memiliki skrip yang menetapkan variabel lingkungan Anda secara internal dan kemudian memanggil perintah yang ditentukan dengan lingkungan itu:
Pendekatan terakhir ini bisa sangat berguna, meskipun tidak nyaman untuk penggunaan interaktif karena tidak memberi Anda pengaturan di shell Anda saat ini (dengan semua pengaturan dan riwayat lain yang telah Anda buat).
sumber
Untuk mengekspor variabel VAR terlebih dahulu, cara yang paling logis dan berfungsi adalah dengan mengambil variabel:
atau
Sekarang ketika menggema dari shell utama berfungsi
Kami sekarang akan mereset VAR
Sekarang kita akan menjalankan skrip untuk sumber variabel kemudian hapus itu:
kode: cat test-export.sh
Ini satu cara
TOLONG DICATAT: Ekspor terbatas pada skrip yang menjalankan ekspor di konsol utama Anda - jadi sejauh pekerjaan cron saya akan menambahkannya seperti konsol seperti di bawah ini ... untuk bagian perintah masih dipertanyakan: di sini adalah bagaimana Anda akan dijalankan dari shell Anda:
Pada prompt perintah Anda (selama export.bash memiliki beberapa nilai gema)
kucing v1.sh
Sekarang selama ini untuk penggunaan Anda - Anda bisa membuat variabel tersedia untuk skrip Anda kapan saja dengan melakukan alias bash seperti ini:
tambahkan ini ke .bashrc Anda
sumber file bashrc Anda dan Anda dapat melakukannya seperti di atas kapan saja ...
Bagaimanapun kembali ke sisanya ..
Ini telah membuatnya tersedia secara global kemudian menjalankan skrip ..
cukup gema lalu jalankan ekspor pada gema!
ekspor kucing
Sekarang dalam skrip atau menjalankan konsol Anda:
Mencoba:
Banyak nilai selama Anda tahu apa yang Anda harapkan dalam skrip lain menggunakan metode di atas:
ekspor kucing
cat test-export.sh
Sekarang hasilnya
dan pembaruan akhir akhir untuk penetapan otomatis membaca VARIABEL:
Script: cat test-export.sh
sumber
Menjalankan
Setiap variabel yang Anda sumber dari file setelah ini akan diekspor di shell Anda.
Setelah selesai, eksekusi. Ini akan menonaktifkan mode allexport.
sumber
bash source export
di GoogleMenemukan cara yang menarik dan rapi untuk mengekspor variabel lingkungan dari file:
di
env.vars
:skrip uji:
sumber
Solusi lain yang, tergantung pada kasusnya, bisa berguna: membuat bash lain yang mewarisi variabel yang diekspor. Ini adalah kasus khusus dari jawaban @Keith Thompson, apakah semua kelemahannya.
export.bash:
Sekarang:
sumber
. ./export.bash
bash
sebagai anak dari shell saat ini. Dan sejakVAR
diekspor sebelumnya, permohonan itu akan menyertakan variabel. Tentu saja, jika Anda mengetikexit
yangVAR
akan keluar. Sudahkah kamu periksa?Jawabannya adalah tidak, tetapi bagi saya saya melakukan yang berikut
skrip: myExport
alias di .bashrc saya
Masih Anda sumber, tapi mungkin dengan cara ini lebih bisa digunakan dan menarik bagi orang lain.
sumber
Mungkin Anda bisa menulis fungsi di ~ / .zshrc, ~ / .bashrc.
Karena menggunakan variabel di luar, Anda dapat menghindari menulis file skrip.
sumber