2009-07-10 1 views
3

Wenn ich beispielsweise ".bashrc" an meiner Linux-Eingabeaufforderung sage, gibt es ein entsprechendes Binär-/Skript, das anstelle des ersten Punkts ausgeführt wird? Wenn der Punkt selbst ein Befehl ist, wo ist seine Position?Was passiert, wenn ich ein Unix-Shell-Skript mit einem '.' Befehl?

+1

Ich glaube nicht, dass das 'gehört-auf-Serverfault'-Tag hier angebracht ist. Shell-Skripting ist ein gültiges Programmierthema. –

+0

Wurde schon einige Male gefragt und beantwortet. Viel Glück, die Dups zu finden, obwohl ... – dmckee

+0

Eines gefunden: http://StackOverflow.com/Questions/922651/Unix-Command-Line-Execute-with-Dot-VS-without – dmckee

Antwort

10

Der Operator . ist eine Abkürzung für die source Bash Built-in (wie von John Kugelman unten angegeben). Typing

help . 

oder

help source 

an der Bash-Eingabeaufforderung geben Ihnen einige Informationen. Weitere Informationen dazu, wie source funktioniert, finden Sie unter http://www.ss64.com/bash/period.html.

+1

+1 Schlüssel ist, dass es eine eingebaute Shell ist, keine separate Binärdatei. Sie können 'help' an einer Bash-Eingabeaufforderung eingeben, um alle anderen Builtins zu sehen. –

3

Zusätzlich möchte ich darauf hinweisen, dass Sie nichts damit "ausführen" (in Bezug auf fork/exec), was sehr wichtig ist (und wahrscheinlich der einzige Grund, dass '.' Existiert).

+3

Ein wichtiger Punkt - eine Konsequenz des Punktbefehls, der nichts ausführt - besteht darin, dass wenn das Punktskript Variablen setzt, diese in der Shell gesetzt werden, die auf das Skript zeigt, nicht in einer Untershell. –