Frage Kann "./" nicht verwenden, um ein Shell-Skript auszuführen


Vielleicht könnte mir jemand hier helfen. Habe Ubuntu 12.04 LTS (Kubuntu) auf zwei Rechnern installiert. Die Dateien .bashrc und .bash_profile sind identisch, da die Dateistrukturen auf jeder Maschine identisch sind.

Auf Maschine 1 führe ich Bash-Skripte in einem Terminal-Fenster mit dem einfachen: ./scriptname.sh

Auf Maschine 2 kann ich das nicht machen und muss folgendes benutzen: sh scriptname.sh Ich kann auch nicht ./ und tab-den Dateinamen des Skripts vervollständigen.

Alle ausführbaren Bits sind korrekt gesetzt, alle Dateien und Ordner haben die korrekten Berechtigungen. In der Kopfzeile der Skripte ist der Shebang korrekt eingestellt.

Irgendwelche Ideen, warum das passieren würde?

Prost


4
2017-11-05 01:23


Ursprung


fragte auch nach Unix & Linux und Paketüberfluss - glenn jackman
Ist das für root oder ein Nicht-root-Benutzer? Tut echo $SHELL Auf beiden Maschinen bestätigen, dass die Shell Bash ist? - Lars Rohrbach
Nicht root-Benutzer, echo $ SHELL gibt / bin / bash auf beiden Rechnern zurück - adeliefan


Antworten:


Das einzige, was dies verursachen würde, ist, wenn das Skript nicht ausführbar ist. Ich weiß, du hast gesagt, das ausführbare Bit ist gesetzt, aber stelle sicher:

chmod +x scriptname.sh

2
2017-11-05 02:07



Nein - es ist definitiv richtig. Ich nehme an, dass etwas mit meiner Umgebungseinstellung (.bashrc oder .bash_profile) nicht stimmt, aber ich kann nicht sehen, wo es sich eingeschlichen hat. - adeliefan


Ich habe von verschiedenen Problemen gelesen, die mit der automatischen Vervollständigung auftreten, nicht unbedingt mit 12.04, und die folgenden zwei Optionen scheinen es wert zu versuchen:

Erster Versuch bash programmable completion deaktivieren: Kommentieren Sie diese drei Zeilen in beiden /etc/bash.bashrc und im Benutzer $HOME/.bashrc:

 if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
     . /etc/bash_completion
 fi

Möglicherweise stellen Sie fest, dass diese Zeilen bereits auskommentiert sind # davor, dann lass es einfach wie es ist.

Also, zweitens, versuchen Sie es Erneute Installation der Bash-Completion:

sudo apt-get purge bash-completion
sudo mv /etc/bash_completion.d /etc/bash_completion.d.bak
sudo apt-get install bash-completion

1
2017-11-05 02:13



Danke für den Vorschlag Lars, es machte aber keinen Unterschied. - adeliefan
Nun, verdammt. Ich nehme an, Sie haben sich danach wieder eingeloggt? - Lars Rohrbach


Die angezeigten Fehler können dadurch verursacht werden, dass versucht wird, eine ausführbare Datei auf einem Datenträger auszuführen, der mit der Eigenschaft "noexe" gemountet wurde. Geben Sie mount ein und überprüfen Sie die Eigenschaften des Geräts, das das Skript enthält. Ändern Sie bei Bedarf die Eigenschaften von / etc / fstab des Mount.


1
2017-11-05 05:59