Ausführung eines Shell-Skripts

Ausführung eines Shell-Skripts

Ich habe zwei Shell-Skriptdateien mit genau denselben Berechtigungen usw. Eine davon kann ich ausführen, indem ich einfach ihren Namen in der Befehlszeile angebe, für die andere muss ich jedoch sh oder ./ verwenden. Was ist der Grund?

Antwort1

Wahrscheinlich liegen die beiden Skripte in unterschiedlichen Verzeichnissen. Eines der Verzeichnisse befindet sich im PATH, das andere jedoch nicht.

Mit dem Befehl können Sie typetesten, ob im $PATH Ihrer aktuellen Shell eine Datei vorhanden ist.

$ type start_dropbox.bash
start_dropbox.bash is /home/saml/bin/start_dropbox.bash

Sehen Sie sich dieses U&L Q&A an"Wie teste ich, ob eine Anwendung in $PATH vorhanden ist?" für eine umfassendere Berichterstattung.

Antwort2

Wenn Sie nur den Namen des Skripts angeben und es funktioniert, haben Sie es in Ihrem /usr/bin/ /usr/sbin oder was auch immer. Es hängt alles davon ab, was Ihr Pfad ist.

Mach das:

1. echo $PATH

Wenn sich Ihr Skript in einem dieser Verzeichnisse befindet, wird es ohne Verwendung des absoluten Pfads ausgeführt.

2. whereis "scripts name"

Whereis oder „which“ verrät Ihnen, wo es sich befindet. Möglicherweise haben Sie sogar einer Datei Ausführungsrechte erteilt, der anderen jedoch nicht. Führen Sie für die Datei, die nicht nur mit dem Namen ausgeführt wird, ein chmod u+x aus.

  1. Möglicherweise müssen Sie #!/usr/bin/env python hinzufügen, wenn es sich um ein Python-Skript handelt, oder #!/usr/bin/env bash, wenn es sich um Bash handelt, und so weiter.

verwandte Informationen