Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Was bedeutet der Punkt vor dem Aufruf eines Skripts

Frage Linux

Mitglied: Cubic83

Cubic83 (Level 2) - Jetzt verbinden

08.04.2011 um 08:24 Uhr, 4126 Aufrufe, 6 Kommentare

Hallo,

ich habe hier ein Bash Skript vom Kollegen. Dieses Skript ruft ein weiteres Skript auf und benutzt Variablen aus dem ersten Skript. Wieso kann man im zweiten Skript nur auf die Variablen Zugreifen wenn man das zweite Skript mit einem Punkt startet. Hier ein Beispiel:

Datei 1

01.
 
02.
#!/bin/sh 
03.
 
04.
VARI="Hallo" 
05.
. ./DATEI2.sh 
06.
 
Datei 2
01.
 
02.
#!/bin/sh 
03.
echo $VARI 
04.
 
Ist der Code so geschrieben klappt es. Lass ich den Puntk weg ist $VARI leer ("./DATEI2.sh" anstatt ". ./DATEI2.sh")

Weiss vielleicht jemand wieso das so ist?

Danke schön,
Mit freundlichen Grüßen
Mitglied: Crusher79
08.04.2011 um 09:12 Uhr
Hi,

bin leider Bash Noob. Normal gibt aber ein einzelner Punkt das aktuelle Verzeichnis an. Wir sind quasi im akt. Verz und führen mit ./ das 2. Skript aus.
Bitte warten ..
Mitglied: dog
08.04.2011 um 09:38 Uhr
. ist der Include-Befehl in SH (in Bash gibt es auch noch source)
Dadurch wird die Datei praktisch in die andere eingesetzt.
Lässt du das weg wird die andere Datei schlicht aufgerufen und dann sind Variablen nur sichtbar, wenn sie exportiert wurden.
Bitte warten ..
Mitglied: Cubic83
08.04.2011 um 09:54 Uhr
Ah Ok,

wieder was dazu gelernt.

Vielen Dank
Mit freundlichen Grüßen
Bitte warten ..
Mitglied: reni09
10.04.2011 um 22:31 Uhr
Ich möchte es mal so erklären.

Normalerweise werden alle Scripte beim Starten in einer Sub-Shell abgearbeitet.
Das heißt, es gelten da nur Variablen, die auch in der Start (oder Vater-)Shell exportiert wurden.

In deinem 1. Script wird VARI aber nicht exportiert und damit diese Variable auch im nächsten Script gültig ist, wird es _ohne_ weitere Sub-Shell aufgerufen.
=> mit dem . wird also _keine_ weitere Sub-Shell aufgerufen, sondern das Script startet in der aktuellen Shell.

Oder Datei 1 so:

01.
#!/bin/sh 
02.
export VARI="Hallo" 
03.
sh ./DATEI2.sh
Bitte warten ..
Mitglied: Cubic83
11.04.2011 um 19:46 Uhr
Hallo,

danke für den Kommentar.

Was bedeutet denn eigentlich exportiert? Wird die Variable dann zu einer Supervariable (also im System definiert) oder ist sie nur im Hauptskript und den Unterskripts (Untershells) definiert?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Biber
11.04.2011 um 19:56 Uhr
Moin Cubic83,

Letzteres. Die Variable steht in der aktuellen Umgebung (=in der aktuellen Shell-Instanz) zur Verfügung und ist dort sichtbar.
UND in allen "Child"-Instanzen, also neuen Shells (oder Unterprogrammen), die von ihr aufgerufen/neu gestartet werden.

Das darüberliegende "Super"-Environment ist zwar verfügbar (sichtbar), kann aber nicht dauerhaft geändert oder gar gelöscht werden.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...