Symulować środowisko powłoki dostępne dla aplikacji GUI?

1

Testuję niektóre skrypty przeznaczone do użycia w różnych aplikacjach GUI, jako bezpośrednie wywołania powłoki lub jako część do shell scriptwywołania AppleScript . Wiem z doświadczenia, że ​​powłoka, którą otrzymuje aplikacja, nie przypomina domyślnie tego, co otrzymuję przy uruchamianiu terminalu, dlatego chciałbym wymyślić sposób na symulację powłoki otrzymywanej przez aplikację, aby móc debugować skrypty wiedząc, że zachowują się tak, jak powinienem się spodziewać, że będą zachowywać się w swoim ostatecznym oczekiwanym środowisku użytkowania.

Jak więc otworzyć terminal (lub zmodyfikować już otwarty), aby działał jak powłoka, do której ma dostęp aplikacja GUI?

rpspringuel
źródło

Odpowiedzi:

2

Po pierwsze, pozwól mi rozwiązać problem aplikacji GUI, która nie zapewnia tego samego środowiska co sesja terminalowa dla skryptu bash.

Różnice wynikają z twojego profilu bash, więc możesz mieć dokładnie to samo w skrypcie powłoki GUI za pomocą sourcepolecenia. Umieść wiersz source /Users/<username>/.bash_profile(zamieniając <username>swoją krótką nazwę) na górze skryptu bash, a będziesz mieć takie samo środowisko w skrypcie, gdy zostanie uruchomiony w aplikacji GUI, jak w sesji powłoki.

Aby uzyskać powłokę bez uruchamiania swojego profilu w iTerm2 (nie mogłem go uruchomić w Terrminal):

  • Otwórz na Terminal-> Preferencje
  • Przejdź do panelu Profile
  • Zduplikuj swój domyślny profil
  • Ogólnie"
  • Zmień nazwę nowego profilu na „Brak profilu”
  • Ustaw klawisz skrótu na Control-Command-A
  • Kliknij „Command”
  • Ustaw polecenie na /bin/bash -norc
  • Zamknij Preferencje

Teraz Control-Command-A otworzy sesję dokładnie tak samo jak aplikacja GUI - wszystko ustawione na bashdomyślne.

Tony Williams
źródło
Pozyskiwanie w profilu nie rozwiązuje wszystkich problemów. Na przykład aplikacje GUI nie wczytują modyfikacji PATH /etc/paths.d/w sposób podobny do Terminalu. Wydaje mi się, że mogą występować również inne problemy związane ze zmiennymi środowiskowymi, ale nie byłem jeszcze w stanie ich naprawić. Mimo to przyjrzę się iTerm2 i zobaczę, jak bardzo zbliżam się do miejsca, w którym muszę być.
rpspringuel
Niewielkie różnice, które znalazłeś, są spowodowane brakiem działania aplikacji GUI /etc/profile. Jedyne, co ma znaczenie, to ŚCIEŻKA, przepraszam, że o niej zapomniałem. Pozostałe są związane z terminalem i terminalem. Korzystanie z rozwiązania iTerm2 również to rozwiązuje.
Tony Williams