Punkt (kommando)
I ett Unix-skal är punkten som kallas dot-kommandot ( . ) ett kommando som utvärderar kommandon i en datorfil i det aktuella exekveringssammanhanget. I C Shell tillhandahålls en liknande funktionalitet som källkommandot
, och detta namn ses också i "utökade" POSIX-skal.
Kommandot punkt ska inte förväxlas med en punktfil , som är en dold fil eller dold katalog med punktprefix . Det ska inte heller förväxlas med ./scriptfile-notationen
för att köra kommandon, som helt enkelt är en relativ sökväg som pekar till den aktuella katalogen (noteras i Unix som ett '.'-tecken, och vanligtvis utanför Path- variabeln ).
Argument
Filnamnet är dot - kommandots första argument . När detta argument inte innehåller ett snedstreck , kommer skalet att söka efter filen i alla kataloger som definieras i miljövariabeln PATH . Till skillnad från vanliga kommandon som också finns i PATH, behöver filen till källan inte vara körbar . Annars betraktas filnamnet som en enkel sökväg till filen.
I flera "utökade" skal inklusive bash, zsh och ksh, kan man ange parametrar i ett andra argument. Om inga parametrar anges, kommer den källkodade filen att få den uppsättning positionsparametrar som är tillgängliga i det aktuella sammanhanget. Om parametrar är specificerade kommer källfilen endast att ta emot de angivna parametrarna. I alla fall kommer parameter $0
att vara $0
för den aktuella kontexten.
Användningar
Eftersom exekveringen av källfilen görs i anropande sammanhang, ändras miljön inom den aktuella processen eller det aktuella skalet. Detta skiljer sig mycket från skript som körs direkt av shebang eller som sh foo.sh
, som körs i ett nytt, separat processutrymme, med en separat miljö.
Därför kan dot-kommandot användas för att dela upp ett stort skript i mindre bitar, vilket potentiellt möjliggör modulär design. Sourcing görs också ofta av skalet vid sessionsstart för användarprofilfiler som .bashrc
och .profile
.
Källa
source
är ett skalinbyggt kommando som utvärderar filen efter kommandot, som en lista över kommandon, som körs i det aktuella sammanhanget. Ofta är det "nuvarande sammanhanget" ett terminalfönster i vilket användaren skriver kommandon under en interaktiv session.
Källkommandot kan förkortas som bara en punkt ( .
) i Bash och liknande POSIX-ish-skal. Detta är dock inte acceptabelt i C-skalet , där kommandot först dök upp.
Vissa Bash-skript bör köras med källsyntaxen your-script
istället för att köras som ett körbart kommando, t.ex. om de innehåller ett kommando för change directory ( cd
) och användaren avser att de ska lämnas i den katalogen efter att skriptet är klart, eller så innehåller de ett exportkommando och användaren vill ändra miljön för det aktuella skalet. En annan användningssituation är när en skriptfil inte har behörigheten "exekvera" . Om du skickar skriptfilnamnet till det önskade skalet körs skriptet i ett underskal , inte den aktuella kontexten.