2011-08-25 6 views
29

Mam problem. Długo szukam tej odpowiedzi - w jaki sposób mogę uruchomić komendę w nowej powłoce bash i pozostać w tej NOWEJ powłoce po wykonaniu tego polecenia. Na przykład:Uruchom polecenie bash w nowej powłoce i pozostań w nowej powłoce po wykonaniu tego polecenia

bash -c "export PS1='> ' && ls" 

spowoduje utworzenie nowej powłoki, eksport PS1, listę katalogów i ... spowoduje wyjście do bieżącej powłoki. Chcę zostać w nowym.

+1

może nam pan wyjaśnić, co próbuję to osiągnąć. Może jest inny sposób na zrobienie tego. – dimba

+0

@dimba Nie mogę mówić o danilo, ale w moim przypadku próbuję ssh na mój serwer sieciowy, cd do katalogu aplikacji i otworzyć konsolę dla tej aplikacji. –

+0

możliwy duplikat [Invoke bash, uruchamianie poleceń w nowej powłoce, a następnie przekazanie kontroli użytkownikowi) (http://stackoverflow.com/questions/7120426/invoke-bash-run-commands-inside-new-shell-then- give-control-back-to-user) –

Odpowiedz

32

można osiągnąć coś podobnego przez nadużywa opcję --rcfile:

bash --rcfile <(echo "export PS1='> ' && ls") 

Od bash manpage:

--rcfile plik

Wykonuje polecenia z pliku zamiast systemu szerokiej /etc/bash.bashrc pliku inicjalizacji i standardowego osobistego pliku inicjującego ~/.bashrc jeśli powłoka jest interaktywna

+2

thx vm !! i mogłem użyć mojego pliku '.bashrc' jako bazy w ten sposób! 'bash --rcfile <(echo" source "$ HOME/.bashrc"; export PS1 = '>' && ls ")' –

+0

Tego właśnie szukam. Dzięki! –

-2

Leniwy jeden:

bash -c "export PS1='> ' && ls; bash" 
+11

Powoduje to rozpoczęcie innej powłoki, ale nie spełnia nowej zachęty. – Jack