Bagaimana mengubah prompt subshell


8

Saya mencoba membuat skrip sederhana yang, antara lain, akan membuat subkulit:

#!/bin/sh

# setup

"${@:-$SHELL}"

# teardown

Pertanyaannya adalah: Saya perlu mengubah prompt default, jadi misalnya:

$ # shell default
$ ./myscript
(myscript) $ # subshell
(myscript) $ exit
$

Saya mencoba untuk mengubah PROMPTdan PS1, tetapi tidak ada yang berhasil. Bagaimana saya bisa melakukan itu?

PS: Saya butuh solusi yang bekerja baik pada Bash dan ZSH, jika memungkinkan.


Kemungkinan publikasi mempublikasikan PS1 pada
Thomas Nyman

Tidak persis duplikat karena pertanyaan lain bashhanya untuk itu .
Stéphane Chazelas

Apakah terlihat seperti duplikat yang tepat ;-(
daisy

Jawaban:


7

Saya pikir Anda dapat membuat subkulit dengan prompt berbeda seperti ini:

$ bash --rcfile <(echo "PS1='subshell prompt: '") -i

Contoh

Env saat ini:

$ bash --rcfile <(echo "PS1='subshell prompt$ '") -i

Di sub shell:

subshell prompt$ echo hi
hi
subshell prompt$ exit
exit

Kembali ke shell asli:

$ 

1
Anda bisa menggunakan here stringsubstitusi alih - alih proses. mis <<< "PS1...".
jordanm

1
@jordanm - dapatkah Anda memberikan contoh? Saya main-main dengan ini tetapi tidak bisa mendapatkan contoh kerja menggunakan string di sini.
slm

2

Alasan itu tidak bekerja mungkin karena ketika Anda memuat shell (yang harus misalnya .: /bin/bash), itu akan berakhir reload file konfigurasi, yang meliputi variabel lingkungan untuk prompt (misalnya .: $HOME/.bashrc) setelah yang melewati variabel lingkungan yang Anda inginkan - sehingga variabel Anda dibuang.

Anda mungkin ingin memeriksa opsi shell untuk memuat file konfigurasi khusus (mis .: --rcfiledalam Bash IINM) dan menggunakannya juga \envuntuk meneruskan variabel lingkungan yang Anda inginkan. Masalahnya adalah bahwa sekali Anda melakukan itu, menembakkan subkulit menjadi tergantung pada shell.

( CAVEAT EMPTOR : Saya belum menganggap ini sebagai jawaban - khususnya, saya belum mencoba semua ini di sistem saya.)

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.