Saya ingin menjalankan subshell bash, (1) menjalankan beberapa perintah, (2) dan kemudian tetap dalam subshell itu untuk melakukan sesukaku. Saya dapat melakukan masing-masing ini secara individual:
Jalankan perintah menggunakan
-c
flag:$> bash -c "ls; pwd; <other commands...>"
namun, ia segera kembali ke shell "super" setelah perintah dijalankan. Saya juga bisa menjalankan subkulit interaktif:
Mulai
bash
proses baru :$> bash
dan itu tidak akan keluar dari subkulit sampai saya katakan secara eksplisit ... tapi saya tidak bisa menjalankan perintah awal. Solusi terdekat yang saya temukan adalah:
$> bash -c "ls; pwd; <other commands>; exec bash"
yang berfungsi, tetapi tidak seperti yang saya inginkan, karena menjalankan perintah yang diberikan dalam satu subkulit, dan kemudian membuka yang terpisah untuk interaksi.
Saya ingin melakukan ini pada satu baris. Setelah saya keluar dari subkulit, saya harus kembali ke shell "super" biasa tanpa insiden. Pasti ada jalan ~~
NB: Apa yang tidak saya tanyakan ...
- tidak bertanya di mana untuk mendapatkan halaman bash man
- tidak bertanya bagaimana membaca menginisialisasi perintah dari file ... Saya tahu bagaimana melakukan ini, itu bukan solusi yang saya cari
- tidak tertarik menggunakan layar tmux atau gnu
- tidak tertarik memberi konteks untuk ini. Yaitu, pertanyaannya dimaksudkan untuk bersifat umum, dan bukan untuk tujuan tertentu
- jika mungkin, saya ingin menghindari menggunakan solusi yang mencapai apa yang saya inginkan, tetapi dengan cara "kotor". Saya hanya ingin melakukan ini dalam satu baris. Secara khusus, saya tidak ingin melakukan sesuatu seperti
xterm -e 'ls'
exec bash
solusinya melibatkan dua subkulit yang terpisah. Saya ingin satu subkulit terus menerus.
exec
adalah ia mengganti subshell pertama dengan yang kedua, jadi Anda hanya meninggalkan 1 shell di bawah induknya. Jika perintah inisialisasi Anda mengatur variabel lingkungan, mereka akan ada di shell yang dijalankan.
exec
adalah Anda kehilangan apa pun yang tidak diturunkan ke subkulit melalui lingkungan, seperti variabel yang tidak diekspor, fungsi, alias, ...
exec bash
solusinya tidak cocok untuk Anda?