Ze strony Shell Command Language specyfikacji POSIX: Jeśli pierwszy wiersz pliku poleceń powłoki zaczyna się od znaków „#!”, Wyniki nie są określone. Dlaczego zachowanie #!nieokreślone przez POSIX? Dziwi mnie, że coś tak przenośnego i powszechnie używanego miałoby nieokreślone zachowanie.
Widziałem kilka skryptów powłoki z następującym shebangiem: #!/bin/bash -x -v Jednak man bashnie wyjaśnia, co te argumenty -xi -voznaczają, jeśli są one należą do bashw ogóle. Co więc oznaczają te -xi -v(i inne możliwe argumenty)?
Załóżmy, że domyślną powłoką dla mojego konta jest zsh, ale otworzyłem terminal i odpaliłem bash i wykonałem skrypt o nazwie prac002.sh, który interpreter powłoki będzie użyty do wykonania skryptu, zsh czy bash? Rozważ następujący przykład: papagolf@Sierra ~/My Files/My Programs/Learning/Shell % sudo cat /etc/passwd | grep papagolf [sudo] password for papagolf: …
Czy istnieje sposób na dynamiczne wybranie interpretera wykonującego skrypt? Mam skrypt, który uruchamiam na dwóch różnych systemach, a tłumacz, którego chcę użyć, znajduje się w różnych lokalizacjach na dwóch systemach. Ostatecznie muszę zmienić linię hashbang za każdym razem, gdy się przełączam. Chciałbym zrobić coś, co jest logicznym odpowiednikiem tego (zdaję …
Ogólnie, skrypty powłoki zawierają następujący komentarz w pierwszym wierszu pliku skryptu: #!/bin/sh. Według przeprowadzonych przeze mnie badań nazywa się to „hash bang” i jest to konwencjonalny komentarz. Ten komentarz informuje Unixa, że ten plik jest wykonywany przez Bourne Shell w katalogu /bin. Moje pytanie zaczyna się od tego momentu. Do …
Znalazłem następujący rodzaj shebang na stronie RosettaCode: --() { :; }; exec db2 -txf "$0" Działa z Db2 i podobnie z Postgres. Nie rozumiem jednak całej linii. Wiem, że podwójny myślnik jest komentarzem w SQL, a następnie wywołuje plik wykonywalny Db2 z niektórymi parametrami przekazującymi sam plik jako plik. Ale …
Kiedy uruchamiam ten skrypt, zamierzam go uruchomić aż do zabicia ... # foo.sh while true; do sleep 1; done ... Nie mogę go znaleźć za pomocą ps ax: >./foo.sh // In a separate shell: >ps ax | grep foo.sh 21110 pts/3 S+ 0:00 grep --color=auto foo.sh ... ale jeśli po …
Mam projekt składający się z około 20 małych .shplików. Nazywam je „małymi”, ponieważ ogólnie żaden plik nie ma więcej niż 20 linii kodu. Przyjąłem podejście modułowe, ponieważ dlatego jestem wierny filozofii Uniksa i łatwiej jest mi utrzymać projekt. Na początku każdego .shpliku umieszczam #!/bin/bash. Mówiąc prosto, rozumiem, że deklaracje skryptów …
Czy zwykle gawk znajduje się w / bin lub / usr / bin? Poszedłbym z tym, #!/usr/bin/env gawkale wtedy nie mogę używać argumentów. Teraz używam #!/bin/gawk -f. Skrypt jest bardzo długi i zawiera wiele pojedynczych cudzysłowów i współpracuje ze stdin. Podręcznik GNU Awk zawiera sekcję 1.1.4 Wykonywalne programy awk, w …
Próbuję uruchomić skrypt Pythona na bezgłowym Raspberry PI przy użyciu winSCP i otrzymać następujący komunikat o błędzie: Command '"./areadetect_movie_21.py"' failed with return code 127 and error message /usr/bin/env: python : No such file or directory. Kiedy próbuję uruchomić z terminala, otrzymuję: : No such file or directory. Próbuję podobnego skryptu …
Podczas uruchamiania skryptów instalacyjnych, na które się skarżyły, napotkałem pewne problemy bad interpreter. Zrobiłem więc trywialny przykład, ale nie mogę zrozumieć, na czym polega problem, patrz poniżej. #!/usr/bin/env bash echo "hello" Wykonanie powyższego skryptu powoduje następujący błąd [root@ech-10-24-130-154 dc-user]# ./junk.sh bash: ./junk.sh: /usr/bin/env: bad interpreter: No such file or directory …
Dlaczego „She-Bang” zaczyna się od #!, na przykład #!/bin/bash? Zawsze akceptowałem to, jak to się robi, ale czy jest po temu jakiś powód? Po co zacząć #; czy to zwykle nie jest komentarz? A może chodzi o komentarz?
Dlaczego nie działają fragmenty następujących skryptu elementarnego: $ cat hello.sh #! /bin/sh echo Hello $ ./hello.sh bash: ./hello.sh: /bin/sh^M: bad interpreter: No such file or directory $ cat hello.py #! /usr/bin/env python3 print("Hello") $ ./hello.py : No such file or directory podczas gdy ręczne wywoływanie tłumacza działa: $ sh hello.sh …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.