Also, ich habe mich gestern mal ein bisschen an Shell-Skripts (nennt man die so?) probiert (was ja auch nicht so sonderlich schwer ist: einfach ne textdatei mit den Shell-Befehlen füttern udn dann im Terminal mit sh name aufrufen). Nun aber meine Fragen: 1. Kann man auch Skripts erstellen, die ein "Argument" verlangen/bzw. verwalten können? 2. Kann man die Skripts beim Starten des Systems laufen lassen (in dem man sie z.B. in den StartupItems Ordner legt)? 3. muss man etwas besonderes angeben, damit man sudo sh <name> eingeben muss, oder braucht der die SuperUserrechte automatisch bei Aktionen, die diese verlangen? 4. Ich glaube, das wars schon... 5. Danke
ja, man nennt sie so. 1. kommt es drauf an, worin diese shell-skripte geschrieben wurden. da du scheinbar "sh" (also /bin/sh bzw. /bin/zsh) benutzt, geht dies über $1 als 1tes argument etc. Noch ein tipp: du solltest deshalb immer eine "she-bang" zeile an den anfang des skriptes stellen (<TT>#!/bin/sh</TT>). dann kannst du den skript auch "chmod 755"-auführbar machen und ihn mit "./skriptname" starten, das "sh" davor brauchst du dann nichtmehr. 2. sicherlich. weiss ich jetz aber nicht ganz genau, wie man das unter OS X macht. => ausprobieren System-Weite Start-Skripte (z.B. um den Apache beim Hochfahren zu starten und so) liegen in /System/Library/StartupItems/ und Library/StartupItems/, müssen aber ein ganzes verzeichnis sein. schau dir die dort liegen an, und form sie zu deinen zwecken um ;o) 3. in einem shell (sh) skript gibt es die variable "$UID", die die nutzer id beinhaltet. Wenn diese "0" ist, wurde das skript mit "sudo" (oder direkt als root) aufgerufen. du kannst dann nach belieben fortfahren oder abbrechen. Beispiel: <TT> #!/bin/sh #ueberpruefen, ob als root gestartet if [ "$UID" -ne "0" ]; then echo "Dieses Skript muss als root ausgeführt werden!"; exit; fi; id; #mach was als root... </TT> Direkt aus dem Shell-Skript heraus nach einer authentifizierung (z.B. dem sudo-passwort) zu fragen ist nicht so ohne weiteres möglich und ansich auch nicht wünschenswert (sicherheitsrisiko!) Wenn du im Skript selber sudo-befehle verwendest (also z.B. an irgendeiner stelle "sudo update_prebinding" oder so steht), fragt der beim ausführen des skriptes an dieser stelle nach dem passwort. 4. wunderbar 5. bitte, ich hoffe geholfen zu haben </TT>
die Frage Skripte und Startup hab' ich hier schon mal beackert: http://forum.macwelt.de/cgi-bin/mac_forum/topic_show.pl?id=20526 hakru
Klasse...dank an Euch Beide... aber wenn Ihr schon gerade hier seid, eine Frage ist dann doch noch aufgekommen: warum muss man manchmal immer dieses "./" vor skripts setzen. Was genau hat dieser "." zu bedeuten? Ich dachte immer, das wäre ein Link auf den eigenen Ordner, aber warum muss man dann beim Aufrufen der Skripts dann immer ./ machen? ./nochmal!!!
naja, ich bin immer lieber vorsichtiger. also, wenn du "bla" und enter eingibst, versucht deine shell ein programm zu finden, was "bla" heisst, und dieses auszuführen. nun kann es sein, dass er auch tatsächlich "bla" ausführt, was dein skript ist. hängt z.T. auch von der shell ab. da du den aufwand aber nicht möchtest, und ausserdem ganz sicher gehen willst, dass genau DAS skript ausgeführt wird, fügst du ein "./" davor, was soviel heisst wie "genau in diesem verzeichnis" ("." ist "dieses verzeichnis, ".." ist das verzeichnis dadrüber, daher auch "cd ..")
gut danke... also gilt es zum Vorbeugen, damit, wenn ich Skript namens gcc habe, auch mein Skript ausgeführt wird, und nicht der Compiler... alles klar... danke nochmals ;-)
jupp. und ich habs mir angewöhnt, weil ich oft an rechnern arbeite, wo er anders den skript gar nicht ausführt (--"skript: command not found")
Also, ich habe mich gestern mal ein bisschen an Shell-Skripts (nennt man die so?) probiert (was ja auch nicht so sonderlich schwer ist: einfach ne textdatei mit den Shell-Befehlen füttern udn dann im Terminal mit sh name aufrufen). Nun aber meine Fragen: 1. Kann man auch Skripts erstellen, die ein "Argument" verlangen/bzw. verwalten können? 2. Kann man die Skripts beim Starten des Systems laufen lassen (in dem man sie z.B. in den StartupItems Ordner legt)? 3. muss man etwas besonderes angeben, damit man sudo sh <name> eingeben muss, oder braucht der die SuperUserrechte automatisch bei Aktionen, die diese verlangen? 4. Ich glaube, das wars schon... 5. Danke
ja, man nennt sie so. 1. kommt es drauf an, worin diese shell-skripte geschrieben wurden. da du scheinbar "sh" (also /bin/sh bzw. /bin/zsh) benutzt, geht dies über $1 als 1tes argument etc. Noch ein tipp: du solltest deshalb immer eine "she-bang" zeile an den anfang des skriptes stellen (<TT>#!/bin/sh</TT>). dann kannst du den skript auch "chmod 755"-auführbar machen und ihn mit "./skriptname" starten, das "sh" davor brauchst du dann nichtmehr. 2. sicherlich. weiss ich jetz aber nicht ganz genau, wie man das unter OS X macht. => ausprobieren System-Weite Start-Skripte (z.B. um den Apache beim Hochfahren zu starten und so) liegen in /System/Library/StartupItems/ und Library/StartupItems/, müssen aber ein ganzes verzeichnis sein. schau dir die dort liegen an, und form sie zu deinen zwecken um ;o) 3. in einem shell (sh) skript gibt es die variable "$UID", die die nutzer id beinhaltet. Wenn diese "0" ist, wurde das skript mit "sudo" (oder direkt als root) aufgerufen. du kannst dann nach belieben fortfahren oder abbrechen. Beispiel: <TT> #!/bin/sh #ueberpruefen, ob als root gestartet if [ "$UID" -ne "0" ]; then echo "Dieses Skript muss als root ausgeführt werden!"; exit; fi; id; #mach was als root... </TT> Direkt aus dem Shell-Skript heraus nach einer authentifizierung (z.B. dem sudo-passwort) zu fragen ist nicht so ohne weiteres möglich und ansich auch nicht wünschenswert (sicherheitsrisiko!) Wenn du im Skript selber sudo-befehle verwendest (also z.B. an irgendeiner stelle "sudo update_prebinding" oder so steht), fragt der beim ausführen des skriptes an dieser stelle nach dem passwort. 4. wunderbar 5. bitte, ich hoffe geholfen zu haben </TT>
die Frage Skripte und Startup hab' ich hier schon mal beackert: http://forum.macwelt.de/cgi-bin/mac_forum/topic_show.pl?id=20526 hakru
Klasse...dank an Euch Beide... aber wenn Ihr schon gerade hier seid, eine Frage ist dann doch noch aufgekommen: warum muss man manchmal immer dieses "./" vor skripts setzen. Was genau hat dieser "." zu bedeuten? Ich dachte immer, das wäre ein Link auf den eigenen Ordner, aber warum muss man dann beim Aufrufen der Skripts dann immer ./ machen? ./nochmal!!!
naja, ich bin immer lieber vorsichtiger. also, wenn du "bla" und enter eingibst, versucht deine shell ein programm zu finden, was "bla" heisst, und dieses auszuführen. nun kann es sein, dass er auch tatsächlich "bla" ausführt, was dein skript ist. hängt z.T. auch von der shell ab. da du den aufwand aber nicht möchtest, und ausserdem ganz sicher gehen willst, dass genau DAS skript ausgeführt wird, fügst du ein "./" davor, was soviel heisst wie "genau in diesem verzeichnis" ("." ist "dieses verzeichnis, ".." ist das verzeichnis dadrüber, daher auch "cd ..")
gut danke... also gilt es zum Vorbeugen, damit, wenn ich Skript namens gcc habe, auch mein Skript ausgeführt wird, und nicht der Compiler... alles klar... danke nochmals ;-)
jupp. und ich habs mir angewöhnt, weil ich oft an rechnern arbeite, wo er anders den skript gar nicht ausführt (--"skript: command not found")