Jak znaleźć pomoc dotyczącą polecenia punktowego `.` w * nix?


21

Muszę znaleźć pomoc dla polecenia punktowego, .takiego jak w . ./my_script.sh(mam na myśli pierwszy punkt).

Próbowałem już znaleźć stronę podręcznika przy użyciu man .i man \.. Jak wyświetlić stronę podręcznika, na której wyjaśnia użycie polecenia .?


14
@ C0deDaedalus: kanoniczna nazwa „.” jest FULL STOP. To, co ludzie to nazywają, zależy od tego, gdzie zostali wychowani.
RedGrittyBrick

5
Wystarczy uruchomić:help .
Kenorb

2
Jednak w dokumentacji nazywa się to dot. Zobacz oficjalną specyfikację na pubs.opengroup.org/onlinepubs/009696699/utilities/dot.html
Charles Duffy

11
@jamesqf .to polecenie, zwłaszcza wbudowana powłoka. W Bash jest to równoważne z source.
wjandrea

4
@jamesqf: .to POSIX, a nie tylko bash. Np. Jest także w Zsh i Ksh.
MSalters

Odpowiedzi:


79

Przede wszystkim powinieneś wywołać type ., prawdopodobnie dostaniesz coś takiego:

. is a shell builtin

Wbudowane są częścią twojej powłoki, nie mają własnych stron podręcznika. Niektóre z nich mogą się wydawać, że je mają, np. echoSą wbudowane w Bash, ale najprawdopodobniej istnieje osobny plik wykonywalny, taki jak /bin/echow twoim systemie, w tym przypadku man echoodnosi się do tego drugiego . Te dwa echoprawdopodobnie nie są ściśle równoważne.

Twoja powłoka może dostarczać informacje o każdym wbudowanym za pomocą helpwbudowanego; spróbować help help, help typea na końcu:

help .

Wbudowane mogą być również wymienione na stronie podręcznika powłoki. Np. (W moim Debianie) wbudowane Bash są objęte bezpośrednio man bash, ale dla wbudowanych Zsh man zshkaże mi działać man zshbuiltins. Ogólnie rzecz biorąc, powłoki mogą, ale nie muszą, wyjaśniać swoje wbudowane funkcje.


7
+1 za wskazanie, które .jest wbudowane w powłokę i powinno to być oznaczone jako odpowiedź, ponieważ OP pyta how to find help for . in *nix ?.
C0deDaedalus

7
+1 do użycia w type .celu wykazania, że ​​niektóre polecenia są wbudowanymi powłokami.
Roger Lipscombe

1
W większości Debianów wbudowane Bash są również wyodrębniane na stronie bash-builtins(1)podręcznika, która ma wygodniejszy rozmiar.
Toby Speight

Wywoływanie „typu” działa tylko wtedy, gdy używasz powłoki z wbudowanym „typem”. Jeśli akurat używasz tcsh, wpisz „type”. daje „typ: Nie znaleziono polecenia”.
jamesqf

1
Nawet . --helpdziała
Digital Trauma

25

Spróbuj użyć man shlub man bashlub strony podręcznika dla dowolnej powłoki, której używasz. (Może man $SHELL.)

Oficjalnie nie jest to nazywane poleceniem „punktowym”, lecz sourcepoleceniem. Wyszukiwanie słowa sourcemoże być pomocne.

np. strona podręcznika bash (wyszukaj „każde wbudowane polecenie”), a szybko znajdziesz dokumentację.

Jeśli chodzi o wyjaśnienie zastosowania, mogę to zrobić tutaj. Odniosę się do tego jako do sourcepolecenia, uznając, że można go skrócić do okresu, w którym używasz niektórych powłok, a dla niektórych powłok może to być konieczne (ponieważ kropka może być rozpoznana, ale całe słowo sourcemoże nie być być).

Jeśli użyjesz sourcepolecenia, twoja powłoka odczyta każdy wiersz z pliku skryptu i spróbuje go wykonać. Potrzebujesz uprawnień do odczytu pliku. (Nie ma znaczenia, czy masz uprawnienia do „wykonywania”). Jeśli zmienisz zmienną, będzie to miało wpływ na bieżącą powłokę.

Jeśli, z drugiej strony, po prostu spróbujesz uruchomić plik, wtedy twoja powłoka poprosi system operacyjny o zajęcie się tym żądaniem. Będzie to wymagało uprawnień do „wykonania”. (W niektórych systemach, takich jak OpenBSD, nie potrzebujesz do tego uprawnień „do odczytu”. W innych systemach, w tym w wielu odmianach Uniksa, będziesz musiał.) Plik może wymagać uruchomienia odpowiedniego nagłówka (np. #!/bin/sh), Aby operacja system rozpoznaje to jako plik skryptu. System operacyjny wykona kopię żądanej powłoki i powie tej powłoce, aby uruchomiła zawartość skryptu. Jeśli środowisko powłoki zostanie zmienione (np. Zmienna otrzyma nową wartość, katalog roboczy zostanie zmieniony (za pomocą  cd), deskryptor pliku zostanie przekierowany (za pomocą exec) itp.), wpłynie tylko na podpowłokę, która została wywołana dla skryptu, i nie może modyfikować środowiska w powłoce nadrzędnej, która wywołała plik skryptu.


15
To tylko sourceuderzenie. W specyfikacji POSIX nazywa się to „poleceniem kropkowym” (a sourcealias nie jest obsługiwany).
Charles Duffy

1
Skrypt wymaga uprawnień do odczytu, w przeciwnym razie tłumacz nie będzie miał do niego dostępu. Zobacz Czy skrypt może być wykonywalny, ale nie do odczytu?
wjandrea

1
Wykonanie skryptu nie powoduje otwarcia podpowłoki, ale zwykły proces potomny, podobnie jak uruchomienie skompilowanego programu. Zobacz odpowiedź na „Czy podpowłoka jest tym samym co skorupa podrzędna?”
wjandrea

1
Więc piszę, man basha potem co /.? Niezbyt przydatne. /sourceprzydałby się, ale musisz to wiedzieć .i sourceto samo.
Joker_vD

1
Znalazłem twój akapit „Co do wyjaśnienia użycia ...” nieco wprowadzający w błąd, ponieważ sugeruje, że może być .i może być source, ale jak już wspomniano @CharlesDuffy, zawsze znajduje się .w dowolnej powłoce zgodnej z POSIX i ma tylko alias sourcew jedna skorupa.
Tom Fenech

6

Nikt inny nie wspomniał o tym, ponieważ często się o nim zapomina.

Twoja największa wskazówka pochodziłaby z pomocnego polecenia whatis.

tim@musha ~ $ whatis .
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis source
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis bash
bash (1)             - GNU Bourne-Again SHell
tim@musha ~ $ whatis lynx
lynx (1)             - a general purpose distributed information browser for the World Wide Web
tim@musha ~ $ whatis linux
linux: nothing appropriate.
tim@musha ~ $ whatis whatis
whatis (1)           - display one-line manual page descriptions

EDYTOWAĆ:

Niektórzy zauważyli w komentarzach, że to nie jest w niektórych rozkojarzeniach - może to jest pakiet do zainstalowania, lub w jakiś sposób włączyli - mam go domyślnie w Gentoo;)

Zawiera wspaniałe, które - które mówi ci, który plik wykonywalny jest nazywany, i whereis, który daje ci wszystkie ścieżki do pliku wykonywalnego, który ty nazywasz, a także strony podręcznika (jeśli istnieje w wielu ścieżkach).


1
Dobra wskazówka, ale wydaje się, że nie wszędzie działa. Na przykład w AIX z ksh whatis .zwracaman: 0703-307 . is not found.
aturegano

4
whatis .nic nie zwraca na Ubuntu 16.04
Vadim Kotov

I „.: Nic odpowiedniego”. na OpenSuSE za pomocą tcsh.
jamesqf

2
Ach, z własnej strony podręcznika : „whatis - wyświetl opisy instrukcji w jednym wierszu”. Wygląda więc na bardzo krótką wersję człowieka.
Xen2050

Bardziej kompatybilną opcją może być: apropos (która powinna być taka sama jak uruchamianie „man -k”). Dla "." lub „źródło” (które jest częścią słowa „zasób”), to nie działa zbyt dobrze z powodu zbyt wielu fałszywych wyników pozytywnych, ale prawdopodobnie działałoby w przypadku innych przykładów (bash, ryś i whatis). W systemie Debian Linux: „ whatis .” dał ” .: nothing appropriate.w OpenBSD, spowodowało to 47 wierszy wyników. W tym konkretnym przykładzie (użycie „ whatis .” w Gentoo) wyniki mogą być po prostu wyjątkowo dobre (co oznacza, że ​​ta technika nie jest ogólnie tak przydatna w wielu innych przykładowych scenariuszach).
TOOGAM,

4

man source pokaże potrzebne wyjaśnienie.

Kropka jest taka sama jak polecenie źródłowe.

source wykonuje skrypt w bieżącej powłoce zamiast w podpowłoce (jest to zwykły sposób).

Korzystanie sourceze zmiennych ustawionych w skrypcie jest zachowywane po zakończeniu skryptu.


2
W jakich dystrybucjach man sourcedziała? Nie w moim Debianie, stąd pytanie.
Kamil Maciorowski

1
Działa w CentOS 6.5. Myślę, że jest bardziej związany z wersją bash. W moim przypadku jest 4.1.2 (1)
jcbermu

@ jcbermu, żadna wersja bash nie zawiera osobnej strony podręcznika dla sourceupstream - jest to bardziej prawdopodobne, że zrobił to CentOS.
Charles Duffy

W moim systemie man sourcedaje ci man bash_builtins, co niczego nie wyjaśnia, ale odnosi się dobash(1)
Scott

1
W moim systemie (Ubuntu LTS) man sourcedaje mi source(3tcl)... type commanda następnie, jeśli polecenie jest wbudowane, help commandto prawdopodobnie właściwy sposób ...
Hastur

0

.Jest synonimem powłoki sourcepolecenia i tak w bash , jego składnia jest wyświetlany ...

help source

Działa dokładnie tak samo jak polecenia includei importw innych językach, ponieważ odczytuje plik docelowy i interpretuje go tak, jakby był częścią bieżącego skryptu. Tak więc plik ten zostanie wykonany w całości przed poleceniami w pozostałej części bieżącego skryptu.

Zwykle powinien znajdować się na początku bieżącego skryptu i jest najczęściej używany do ładowania zmiennych i / lub definicji funkcji.

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.