Saya memiliki beberapa akun Amazon EC2 dan ingin cepat dapat beralih variabel, seperti $EC2_HOME
, menggunakan skrip.
Saya memiliki skrip shell yang diatur seperti ini:
#!/bin/sh
export EC2_HOME=/home/me/.ec2
echo $EC2_HOME
Ketika saya menjalankan skrip saya tahu itu EC2_HOME
sudah diatur, tetapi saya berpikir bahwa menggunakan export
akan membuat variabel tetap ada setelah skrip selesai. Tidak, karena berlari echo $EC_HOME
tidak menunjukkan apa-apa.
Saya tahu ini pasti pengetahuan scripting Linux yang sangat dasar, tetapi saya tidak mengetahuinya. Saya mencoba mencari pertanyaan terkait tanpa hasil - jadi saya minta maaf jika ini adalah duplikat.
.
atausource
, Anda tidak melahirkan proses anak baru, Anda menjalankan perintah di shell saat ini..
atausource
. Mengapa ini terjadi?exit
pernyataan, jadi tidak cocok untuk diambil sumbernya.source ./script
bekerja dengan sangat baik,sudo source ./script.sh
katasudo: source: command not found
. Bagaimana saya bisa melakukan ini menggunakan sudo?sudo
dan tergantung pada pengaturan konfigurasi di/etc/sudoers
Anda dapat atau tidak dapat menjaga lingkungan Anda saat menjalankan perintah dengansudo
. Saya sarankan Anda untuk mencoba sumber skrip Anda, dan kemudian jalankansudo
dengan-E
opsi untuk melestarikan lingkungan. Jika tidak berhasil, saya kira ada sangat sedikit yang dapat Anda lakukan.Saat Anda menjalankan skrip, skrip tersebut akan mendapatkan shellnya sendiri dan lingkungannya sendiri, yang menghilang lagi segera setelah skrip selesai. Untuk menjaga variabel lingkungan sekitar, sumber skrip ke shell Anda saat ini:
atau setara (tapi sedikit lebih portable) gunakan perintah POSIX dot :
Kemudian definisi akan dimasukkan ke dalam lingkungan shell Anda saat ini dan diwarisi oleh program apa pun yang Anda luncurkan darinya.
Agar lebih dekat dengan menjalankan skrip,
. a.sh
akan menemukan a.sh dengan mencari direktori diPATH
variabel lingkungan.Ada beberapa seluk-beluk dalam bagaimana ini berperilaku, dan apakah
.
dansource
itu sama (atau ada sama sekali).. ./a.sh
pasti akan berperilaku sama di setiap shell yang kompatibel dengan POSIX, tetapisource
dan.
, dan. a.sh
dan. ./a.sh
, dapat bervariasi. Untuk Bashsource
dan.
sama dalam semua kasus; untuk zshsource
selalu memeriksa direktori saat ini terlebih dahulu ; ksh pada dasarnya serupa.Jika nama skrip diberikan sebagai path (berisi a
/
), path itu digunakan secara langsung dalam semua kasus. Hal yang paling dapat diandalkan untuk dilakukan adalah. ./script
atau. /path/to/script
.sumber
Hanya sebagai catatan.
Jika Anda ingin menjalankan skrip dari internet yang mengekspor env ke sistem
Anda dapat menggunakan format berikut
Sebagai contoh:
sumber