Bir bash alt kabuğu çalıştırmak, (1) birkaç komut çalıştırmak, (2) ve sonra da istediğim gibi yapmak için bu alt kabukta kalmak istiyorum. Bunların her birini ayrı ayrı yapabilirim:
Flag kullanarak komutu çalıştırın
-c
:$> bash -c "ls; pwd; <other commands...>"
ancak komutlar uygulandıktan sonra derhal "süper" kabuğa döner. Ayrıca etkileşimli bir alt kabuk çalıştırabilirim:
Yeni
bash
işleme başla :$> bash
ve açıkça söyleyene kadar alt kabuktan çıkmayacak ... ama ilk komutları çalıştıramıyorum. Bulduğum en yakın çözüm:
$> bash -c "ls; pwd; <other commands>; exec bash"
hangi çalışır, ancak istediğim şekilde değil, verilen komutları tek bir alt kabukta çalıştırır ve etkileşim için ayrı bir komut açar.
Bunu tek bir satırda yapmak istiyorum. Alt kabuktan çıktığımda, olaysız normal "süper" kabuğa geri dönmeliyim. Bir yolu olmalı ~ ~
Not: Ne sormuyorum ...
- bash man sayfasını nereden alacağınızı sormamak
- başlatma komutlarını bir dosyadan nasıl okuyacağımı sormama ... Bunun nasıl yapıldığını biliyorum, aradığım çözüm değil
- tmux veya gnu ekran kullanmakla ilgilenmiyor
- bağlam bağlamında ilgilenmiyorum. Başka bir deyişle, soru genel olmalı ve herhangi bir özel amaç için değil.
- mümkünse, istediğimi elde etmek için bu tür geçici çözümleri kullanmaktan kaçınmak istiyorum, ancak "kirli" bir şekilde. Bunu sadece tek bir satırda yapmak istiyorum. Özellikle, böyle bir şey yapmak istemiyorum
xterm -e 'ls'
exec bash
çözüm iki ayrı alt kabuk içerir. Sürekli bir deniz kabuğu istiyorum.
exec
tam o yerini ikinci ile birinci altkabuk, bu nedenle sadece ebeveyn altında 1 kabuk kalır geriye. Eğer başlatma komutlarınız ortam değişkenlerini ayarladıysa, bunlar çalıştırılan kabukta bulunacaktır.
exec
şu ki, dışa aktarılmayan değişkenler, fonksiyonlar, takma adlar, gibi alt kabuklara aktarılmayan herhangi bir şeyi kaybetmeniz ...
exec bash
Çözüm ne şekilde sizin için uygun değil?