Freitag, 25. Mai 2012, 20:16

Du bist nicht angemeldet.



Walter_vdV

hat sich gut eingelebt.

  • »Walter_vdV« ist der Autor dieses Themas

Beiträge: 96

Ubuntu: 10.10

Architektur: 32-bit

  • Private Nachricht senden

1

Samstag, 25. Dezember 2010, 11:25

Verständnisfrage(n) zur Skriptausführung

Hallo zusammen,
ich hoffe für Euch alle war der Gabentisch reichlich bestückt! Jetzt zum Thema.
Ich habe mir in meiner Ubuntu-Umgebung als virtuelle Maschine einen Ubuntu-Server, der als Proxy fungiert, installiert. Warum, würde ich gerne in einem anderen Beitrag später ausführlicher diskutieren. In der Serverinstallation steht mir natürlich nur die Kommandozeile zur Verfügung. Um den Server herunterzufahren muß ich also

Quellcode

1
sudo shutdown -h now

eingeben.
Da ich primär ja kein Romanschreiber bin und dann wegen "sudo" auch noch das Passwort eingegeben werden muß, habe ich mir gedacht als genialer Skripter schreib ich mir ein Skript mit dem Dateinamen "x". Das Ergebnis der Eingabe von "x" und "Return" brauch ich hier nicht weiter zu erläutern.
Ich bin dann zu der Erkenntnis gekommen das die Eingabe von "sh x" und "Return" das von mir gewünschte Resultat liefert, was jetzt zu diesem Beitrag führte.
Ich hatte immer gedacht, da ja Linux keine Dateiendungen benutzt, daß das Ausführen irgendwelcher Programme/Skripte anhand der Angaben im Dateiheader erfolgt. (Ich denke schlussendlich ist das bei Windows auch der Fall). Also müsste doch die Angabe "#! /bin/sh" ausreichend sein. Insbesondere da ich mir in meiner damaligen VM unter Win schon mal ein Backup-Skript in der gleichen Weise geschrieben habe, was ich allerdings über einen Starter auf dem Desktop aufgerufen habe, aber da stand auch nichts anders drin als "exec:~/skripte/mach_backup".
Oder kann es sein, daß ich mein x-Skript "ausführbar" machen muß (kann mich allerdings nicht erinnern, daß ich das bei meinem backup-Skript machen mußte) oder ist das wieder was anderes? Wen aber doch, wie macht man das auf der Kommandozeile (habe im Wiki nichts gefunden)?
Bitte laßt mich nicht dumm sterben auch wenn es ja funktioniert, ich möchte eigentlich wieder nur die Zusammenhänge wissen.
Gruß Walter
Wer in meinem Beitrag einen Fehler findet, darf ihn behalten

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Walter_vdV« (1. Januar 2011, 13:49)


basslord

Ubuntufreund

Beiträge: 2 671

Ubuntu: 12.04

Kernel: 3.2.0-24-generic

Desktop: KDE

Architektur: 64-bit

Danksagungen: 1 / 1

  • Private Nachricht senden

2

Samstag, 25. Dezember 2010, 12:35

Hallo Walter,

Oder kann es sein, daß ich mein x-Skript "ausführbar" machen muß
genau das ist es ;) Ein nicht ausführbares Skript (oder allgemein: eine nicht ausführbare Datei ohne x-Flag) lässt sich einfach nicht über den bloßen Namensaufruf ausführen. Und dass es ein Skript ist, dass weiß das System schon. Halt nur eben nicht ausführbar. Endung ist egal.

Gruß
Rodge
"Ohne Musik wäre das Leben ein Irrtum." - Friedrich Nietzsche

Walter_vdV

hat sich gut eingelebt.

  • »Walter_vdV« ist der Autor dieses Themas

Beiträge: 96

Ubuntu: 10.10

Architektur: 32-bit

  • Private Nachricht senden

3

Sonntag, 26. Dezember 2010, 11:18

Hallo Rodge,

danke erst mal. Ich habe jetzt gelernt, daß und wie man mit "chhmod" auf der Kommandozeile das x-Flag setzen kann. Trotzdem, standalone ausführbar ist das Skript immer noch nicht. Ich muß immer noch "sh x" eingeben. Das heißt also, egal ob das x-Flag der Datei gesetzt ist oder nicht, es funktioniert immer nur mit "sh"!

[ergänzt um 18:45]
Habe gerade fesgestellt, daß die Eingabe "./x" auch funktioniert. Dies ist bezüglich der Tipparbeit keine Erleichterung, öfffnet für mich aber eine neue Baustelle. Ich habe immer noch nicht kapiert wenn man "/", "./" oder nicht benutzt. Das ist bei mir immer noch eine reine Probiererei. Ich hab ein absolutes Verständnisproblem damit, daß ich z.B. von meinem Home-Directory mit "cd unterverzeichnis" wechseln muß, der Aufruf eines darin enthalten Programms aber mit "/prog" bzw. mit "./prog" erfolgen muss, auf der anderen Seite vom Home-Dir mit "/WorkDir/prog" das Programm aufgerufen werden muss. Wo kann man sich das dazu notwendige "Verständnis"-Wissen aneignen. In den entsprechenden Wiki-Artikeln über Dateisystem etc. oder Befehle auf der Befehlszeile ist mir bis jetzt in der Richtung noch nichts untergekommen und "/ --help" bzw. "// --help" liefert ?logischerweise? auch kein Ergebnis

[ergänzt 26.12.10, 11:00]
weitere Erkenntnus: das Skript muss in einem Verzeichnis, daß in der $PATH-Variablen aufgeführt ist, liegen. Sinnvollerweise legt man im Home-Verzeichnis eine Verzeichnis "bin" an, dann passiert das automatisch oder man ändert die Datei "~/.profile". Neuanmeldung jeweils erforderlich.
Trotzdem ist mir das Verhalten von Linux nicht ganz klar. Wenn ich mich im Verzeichnis "~/xyz/zxy/ludmilla" befinde und das Script befindet sich in "~/gehtnicht" ist mir das klar. Wenn ich mich aber im Pfad "~/gehtnicht" befinde . In meinen Gehirnwindungen wird da zwar immer kurzfristig ein "logischer Pfad" aufgezeigt warum das so sein könnte, der ist aber gleich wieder weg. Kurz gesagt ich kapiere es nur zu 0,5%.

Gruß Walter
Wer in meinem Beitrag einen Fehler findet, darf ihn behalten

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Walter_vdV« (26. Dezember 2010, 11:18)


WernerS

ist zu Gast bei Freunden.

Beiträge: 17

  • Private Nachricht senden

4

Sonntag, 26. Dezember 2010, 23:47

Hallo Walter,
das aktuelle Verzeichnis (also ".") soll aus Sicherheitsgründen nicht in den Pfad aufgenommen werden.
Werner

Walter_vdV

hat sich gut eingelebt.

  • »Walter_vdV« ist der Autor dieses Themas

Beiträge: 96

Ubuntu: 10.10

Architektur: 32-bit

  • Private Nachricht senden

5

Samstag, 1. Januar 2011, 13:48

Hallo zusammen,
im Zusammenhang mit diesem Beitrag habe ich hier
http://linuxundich.de/de/ubuntu/uber-die…hlen/#more-5716
eine sehr gute Erklärung für Anfänger wie mich gefunden. Sorry, dass ich jetzt Arbeit bei anderen angestossen habe und am Schluss zusätzlich selber ein Ergebnis liefere. Aber auf solche Artikel stösst man (ich) oft nur durch Zufall. Ich setze den Beitrag jetzt auch auf erledigt.
@WernerS, danke, jetzt verstehe ich auch was Du gemeint hast.
Allen ein Gutes Neues Jahr
Gruß Walter
Wer in meinem Beitrag einen Fehler findet, darf ihn behalten