kann man den namen eines shell-scripts, das gerade ausgeführt wird, ausdrucken?

M

minipig

Doppel-As
hallo!!

kann man den namen eines shell-scripts, das gerade ausgeführt wird, ausdrucken?
ich suche etwas analoges zu '$0', nur eben für das ausgeführte skript,
nicht für die ausführende shell.
über hilfe bzw. informationsquellen würde mich sehr freuen.

vielen dank schon im voraus.

by minipig ?(?(
 
$0 gibt das momentan ausgeführte Skript aus.
 
Und ohne den kompletten Pfad:
Code:
basename $0
 
Beispiel: test.sh:
---------------------------------
bolnx039:~ # cat test.sh
echo `basename $0`
echo $0
---------------------------------
bolnx039:~ # ./test.sh
test.sh
./test.sh
bolnx039:~ #
---------------------------------
bolnx039:~ # /root/test.sh
test.sh
/root/test.sh
bolnx039:~ #
---------------------------------

Mit und ohne Pfad! Es wird der "Aufruf"-Pfad ausgegeben!!!

Gruß Günter
 
hallo!!

bei mir gibt $0 immer den namen der auführenden shell aus.
dehalb habe ich ja die mail geschrieben.
aus meiner .bashrc:
Code:
..
PS1="\u@\h:\w\##:"
echo $(whoami): reading $(pwd)/.bashrc
echo '        ' setting PS1
echo '$0=' $0
führt zu:

Code:
schwein: reading /home/schwein/.bashrc
         setting PS1
$0= bash

by minipig :(:(

ps.:
die daten meines systems:
distribution: suse 9.3
kernelversion: 2.6.11.4-20a-default
plattform:i386
prozessor:i686
 
Preisfrage: Durch welches "Programm" wird die .bashrc gelesen??
 
Hallo,

das ausführenden Programm ist doch in dem Fall die bash!
Bei einem externen Script kommt der Scriptname - siehe oben!

Gruß Günter
 
Preisfrage: Durch welches "Programm" wird die .bashrc gelesen??
was soll das? das will ich doch überhaupt nicht wissen.
ich denke, sowas kommt nur zustande, wenn nur die letzten beiräge zu einem thema gelesen werden. also nochmal meine ursprüngliche frage:
kann man den namen eines shell-scripts, das gerade ausgeführt wird, ausdrucken?
ich suche etwas analoges zu '$0', nur eben für das ausgeführte skript,
nicht für die ausführende shell.
also $0 geht nicht. wie kann man sich dann den namen eines shell-scripts ausgeben lassen?
(.bashrc war nur ein beispiel)

by minipig X(X(X(
 
was soll das? das will ich doch überhaupt nicht wissen.
ich denke, sowas kommt nur zustande, wenn nur die letzten beiräge zu einem thema gelesen werden. also nochmal meine ursprüngliche frage:

Was das sollte?
Du solltest einfach nochmal über deine Fragestellung nachdenken.
Und vielleicht auch versuchen, dir diese Frage zu beantworten.
Das ist ist nämlich der Schlüssel für dein (Verständnis-)Problem.

In der .bashrc die Variable $0 auszugeben macht doch überhaupt keinen Sinn, weil die Variable $0 beim Aufruf der .bashrc IMMER die bash ist.
Das läßt sich zwar ändern, aber ich erspare mir hier dir das zu beschreiben.
Hat etwas mit dem Shell-Eintrag in der passwd zu tun und einem Link im $HOME. (bleibt aber dennoch immer eine Shell)

Du hast genug Hinweise hier bekommen, wie man das aufrufende Script mit der Variablen $0 oder 'basename $0' herausbekommt, aber verstehst scheinbar nicht, dass das bei der .bashrc immer die bash ist.
Egal, ob das nur ein Beispiel ist oder nicht. Erstelle doch einfach mal ein Script und lasse dir darin die Variable $0 (oder [$1] oder $#) ausgeben (wurde hier ja schon gemacht), dann solltest du nicht mehr die bash als Ausgabe bekommen, versprochen!!

Im Übrigen habe ich alle Beiträge hier gelesen, bei dir bin ich mir damit nicht so sicher, sonst wäre dieser Thread nach einem, maximal zwei Beiträgen, beendet gewesen.
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Oder suchst du $1??

Ein script (Programm) kann auf der Befehlszeile Argumente oder Optionen mitbekommen.

Z.B.: rm /tmp/foobar.txt
in diesem Fall wäre
$0 = rm
$1 = /tmp/foobar.txt
 
Zuletzt bearbeitet:
ja tätsächlich, bei selbstgeschriebenen skripten geht es.
hatte wohl eine etwas sehr lange leitung. entschuldigung.

by minipig
 

Ähnliche Themen

Verzeichnis mit 1200 Dateien auf Verweise in Textdateien checken

Hilfe für ein shell script

Falsche Ausgabe von $LINENO

NAS-Drive Mount in Bash-Script über crontab

Suchen und Ersetzen mit regulärem Ausdruck

Zurück
Oben