Cara sumber skrip bash di eshell emacs


5

Saya mencoba menggunakan eshell di dalam emacs, jadi saya tidak perlu beralih antara emacs dan terminal. Saat menggunakan bash, saya memiliki beberapa skrip bash yang biasanya saya sumber untuk mengekspor beberapa variabel env (untuk beralih di antara berbagai versi pahat dan lingkungan build). Apakah mungkin untuk mengeksekusi skrip saya dengan bash, dan menempatkan ekspor (atau beberapa di antaranya) dalam eshell.

Pada dasarnya saya mencoba untuk mendapatkan bash-script di eshell.

Apakah ada cara untuk melakukan hal seperti itu?


1
Ini tampaknya menjadi kesalahpahaman umum karena beberapa alasan, tetapi "sumber" tidak berarti "menetapkan beberapa variabel"; itu berarti (dalam konteks sh) "jalankan perintah dalam file ini dalam konteks saat ini". Oleh karena itu, jawaban atas pertanyaan "dapatkah saya sumber file bash dalam program yang menggunakan beberapa bahasa lain yang tidak kompatibel?" adalah tidak ada .
LaC

@LaC - Anda harus memposting komentar Anda sebagai jawaban IMO
Nifle

@Nifle - keinginan Anda adalah perintah saya.
LaC

Jawaban:


4

Saya pikir, saya menemukan cara. Saya telah membuat my-init.elskrip dengan konten ini:

  bash -c "source my-init.sh> / dev / null && env | \
           grep -E 'MY_ENV \ =' | \
           sed -e 's / \ ([^ =] * \) = \ (. * *) / (setenv \ "\ 1 \" \ "\ 2 \" \) / g' "\
           > / tmp / my-init-env
  source / tmp / my-init-env

Ketika bersumber dari dalam eshell, itu akan memulai bash, sumber di my-init.shsana (dengan demikian mengatur MY_ENVvariabel), dan kemudian memanggil envuntuk mendapatkan MY_ENV, dan mengubahnya dengan sedsesuatu seperti (setenv "MY_VAR" "value")yang bersumber dari eshell asli.

Tidak cantik, tetapi berhasil!


Saya meminta mod untuk menghapus status "komunitas wiki". Lalu aku membesarkan hatimu ..
Nifle

1

Ini tampaknya menjadi kesalahpahaman umum karena beberapa alasan, tetapi "sumber" tidak berarti "menetapkan beberapa variabel"; itu berarti (dalam konteks sh) "jalankan perintah dalam file ini dalam konteks saat ini". Oleh karena itu, jawaban atas pertanyaan "dapatkah saya sumber file bash dalam program yang menggunakan beberapa bahasa lain yang tidak kompatibel?" adalah tidak ada .


Saya tahu, apa itu sumber, tetapi sedang berusaha mencari solusi / solusi. Bagaimanapun, terima kasih, atas balasan Anda!
siddhadev
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.