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?

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.