Unterschied zwischen ./ und sh

seim

seim

seim oder nicht seim?
Wollt mal fragen was überhaupt der Unterschied von
Code:
./scriptname
und
Code:
sh scriptname
ist.

Habs mal anhand der TS Datei und von meinem bittornado.sh Script ausprobiert:
Code:
# ./ts start
# sh ts start

# ./bittornado.sh Datei.torrent
# sh bittornado.sh Datei.torrent
und da gibts keinen Unterschied ^^
 
Mit ./ führst du ein Programm aus mit sh ein shellscript. Aber wenn du ein Shellscript mit "chmod 755" "verwandelst" kannst du es auch mit ./ ausführen.
 
Ausserdem kann man sh auch noch interessante Optionen mitgeben und auf manchen Systemen laeuft das Script dann tatsaechlich in einer bourne-shell im Gegensatz zu anderen, wo sh nur noch ein link auf die bash ist.
 
Noch ne noobfrage hinterher^^

ein programm ausführen...

Also unter Windows sind ja .exe Dateien die Typischen Merkmale für Programme...
Welche sind das unter Linux?
 
Noch ne noobfrage hinterher^^

ein programm ausführen...

Also unter Windows sind ja .exe Dateien die Typischen Merkmale für Programme...
Welche sind das unter Linux?

Gibt es nicht, was auch richtig so ist.
Allein wegen einem Programmname eine Datei ausführbar zu machen, ist das Sicherheitsloch schlechthin.
Unter *nix siehe Dateirechte.

Gruß Wolfgang
 
Jeder Typ hat seine Endung. Z.B. ein SH .sh, auch wenn es ausführbar ist, ist das .sh meistens noch erhalten. Aber bei anderen Programmen, z.B. ein C++Prog da ist es eigentlich üblich keine Endung. Nur Programmname.
 
Um der urspruenglichen Frage noch eine Antwort hinzuzufuegen:
mit 'sh filename' werden die Angaben in 'filename' von der Shell interpretiert. Mit './filename' kann man ausser shell-skripten und binaries auch Skripte ausfuehren, die nicht von der shell interpretiert werden, sondern z.B. von perl oder gnuplot. Dies laesst sich dann mit der Instruktion
'#!/pfad/zum/interpreter'
erreichen:
Code:
#!/usr/bin/gnuplot
plot  x*x
pause -1
kann als skript direkt ausgefuehrt werden.
 
Um herauszubekommen, ob eine Datei unter Linux als ausfuehrbare Datei genutzt werden kann, gibt es zwei Moeglichkeiten: In Skripten muss in der ersten Zeile '#!/pfad/zum/interpreter' stehen, nur dann koennen diese direkt ausgefuehrt werden. Ist diese Zeile nicht da, muss das entsprechende Skript mit '<interpreter> <skript>' (z.B. '/usr/bin/perl meinperlskript.pl') ausgefuehrt werden.
Ob es sich bei einer Datei in einem Binaerformat um eine ausfuehrbare Datei handelt, kann man mit 'file <datei>' ermitteln. Bei ausfuehrbaren Dateien muesste der Output dann etwa folgendes enthalten:
Code:
ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0
 

Ähnliche Themen

Skript soll nicht doppelt laufen... kill pkill pid cron

Script pausieren bis Bedingung erfüllt ist

Keine grafische Oberfläche (Debian Installation)

Dateien selektieren und zählen

Unterschied chmod und umask

Zurück
Oben