Wie starte ich in Linux eine Bash-Skript-Datei auf bequeme Art und Weise?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo

Wenn ich nun in das Terminal eingebe -->

bash home/Username/Dateipfad/Skriptdateiname.sh

dann wird mein Passwort verlangt

Wenn ich ein Script starte das mir selber gehört, dann wird da niemals eine Passwortabfrage kommen, die nämlich kommt nur, wenn Du z.B. im Script Programme verwendest welche nur mit root-Rechten auszuführen sind.

Allerdings bin ich darüber jetzt enttäuscht, ich wollte die Bash-Skript-Datei mit einem einzigen Mausklick ausführbar machen, ohne jedes mal die Bash-Skript-Datei mit vollständiger Angabe des Dateipfades zur Bash-Skript-Datei im verdammten Terminal starten zu müssen :-((

Deine Enttäuschung rührt daher das Du es eben (noch) nicht weißt, dafür kann Linux aber nichts.

Dann schreibe den kompletten Pfad in das Script und lege es, wie es sich unter GNU/Linux gehört,  in einem Pfad ab der in der Variablen $PATH steht, dann nämlich kannst Du es einfach durch:

Skriptdateiname.sh

starten.

Legst Du für das Script noch einen Symlink, zum Beispiel als Desktopsymbol, ab, dann kannst Du es durch einen Klick oder Doppelklick¹ ausführen lassen.

Linuxhase


¹ Das hängt vom verwendeten Desktop ab und davon wie man diesen konfiguriert hat.

Erst mal recht herzlichen Dank für deine hilfreiche Antwort !

Ja, im Skript steht ein Befehl drin für den man root-Rechte braucht.

Die Passwortabfrage stört mich auch so weiter nicht.

Wie finde ich den Pfad heraus der in der Variablen $PATH steht ?

0
@DepravedGirl

die PATH-Variable steht in keinem Pfad, das ist eine Variable (Speicherplatz) , die beim Einloggen erstellt wird und irgendwo im RAM steht.

Du kannst die temporär, gültig im jeweiligen Terminal/Konsole mit

export PATH=$PATH:<neuer-Pfad>:<weiterer-neuer-Pfad> .... 

erweitern.

Soll diese Änderung permanent werden, dann ( je nach Distribution und login-Shell ) gehört dieser Code in  die

~/.profile
~/.bashrc
....

2
@guenterhalt

Vielen Dank für den Kommentar :-)) !

Dass die PATH-Variable nur temporär ist musste ich inzwischen auch schon feststellen ...

0
@DepravedGirl

temporär, ja und nein. Da sie erst nach dem Booten erstellt wird, ist sie immer temporär. Da man sie aber erstellen kann, dass sie nach dem Booten/Einloggen immer den gleichen Inhalt hat, ist sie praktisch statisch.

Mit temporär bei Eingabe des Befehls export PATH=$PATH.... habe ich gemeint, dass sie nur in diesem Terminal (und seinen "Nachfolgern" ) gültig ist, in anderen Terminals oder gar in bereits existierenden Terminals, nicht.

 

1
@DepravedGirl

@DepravedGirl

Ja, im Skript steht ein Befehl drin für den man root-Rechte braucht.

Dann ist das ja geklärt ;-)

Ich habe jetzt die Informationen zu PATH gefunden -->

Bei mir liegen die eigene Scripte, die nicht beim Systemstart ausgeführt werden sollen, in /home/linuxhase/bin bereit um aufgerufen zu werden. Für administrative Scripte wäre eher /sbin  das richtige Verzeichnis.

Würdest Du mir sagen/schreiben welches Kommando Du da ausführen möchtest? - Eventuell gibt es noch einen besseren Weg.

Linuxhase

2
@Linuxhase

Ein virtuelles Laufwerk soll erschaffen werden indem eine bereits vorhandene ISO-Datei eingelegt werden soll. Das Ganze soll aber nicht beim Systemstart geschehen, sondern nur dann, wenn ich es will.

Alle meine Skriptdateien werden im ein und demselben Verzeichnis liegen, daher wäre es das beste wenn die PATH-Variable permanent gesetzt wäre.

0
@DepravedGirl

@DepravedGirl

Ein virtuelles Laufwerk soll erschaffen werden indem eine bereits vorhandene ISO-Datei eingelegt werden soll. Das Ganze soll aber nicht beim Systemstart geschehen, sondern nur dann, wenn ich es will.

Gut, dann ist es in /home/$USER/bin wohl gut aufgehoben. Obwohl ich mir dann auch gut vorstellen könnte sudo zu nutzen um dem User genau diese Aufgabe, also das mounten einer ISO-Datei, zu ermöglichen, so würde man sich die Passworteingabe sparen.

Alle meine Skriptdateien werden im ein und demselben Verzeichnis liegen, daher wäre es das beste wenn die PATH-Variable permanent gesetzt wäre.

Wie gesagt, lege alles nach /home/$USER/bin und gut ist's, denn dieser Pfad steht immer in $PATH drinnen (logisch, es ist ja Dein Verzeichnis für ausführbare Dateien :-)

Linuxhase

1

Zitat ein

Hat jemand eine Idee wie man eine Bash-Skript-Datei mit einem einzigen Mausklick ausführbar machen kann ?

Zitat aus

Mit dem Mausklick kannst Du die Verknüpfung mit der Bash auf der grafischen Oberfläche öffnen - ist das Terminal dann geöffnet -

Gibst Du in der Konsole, Terminal einfach ein:

. Scriptdateiname.sh oder ./Scriptname.sh

Der Punkt führt Dich auf den Pfad wo Dein Scriptdateiname.sh abgespeichert ist. 

La

Vielen Dank für deine Antwort !

0

Du kannst auch mit

export PATH=$PATH:/Pfad/zu/einem/Verzeichnis/

Ein Verzeichnis zu $PATH (schon von anderen genannt) hinzufügen.

$PATH beschreibt ja, in welchen Verzeichnissen nach dem eingegeben Befehl gesucht wird. Wenn du also z.B. den Desktop hinzufügst, wird bei der eingabe von 'Script.sh' in der Kommandozeile (ohne Pfad) auch im Desktop gesucht, sodass das Script ohne Pfad gefunden wird und ausgeführt werden kann...

Am besten, du legst einen Ordner mit Scripts an, den du dann mit dem oben gennanten Befehl zu $PATH hinzufügst, dort kannst du dann alle Scripts ablegen, die du schreibst, und diese dann ohne den Pfad, nur mit dem Namen, erreichen...

Ich hoffe, das war einigermaßen verständlich :)

.sh per Tastatenkombination starten?

Habe eine funktionierende .sh Datei (/bin/Uhrzeit.sh) die ich mit chmod +x ausführbar gemacht habe.
Wenn ich im Terminal
cd /bin
./Uhrzeit.sh
eingebe wird mir (wie es soll) die Uhrzeit als Benachrichtigung angezeigt.
Inhalt von Uhrzeit.sh:
notify-send "$(date)"
Jtz möchte ich die .sh ausführen indem ich eine Tastenkombination drücke (zB. Strg + Ä)
Wie mach ich das?
Habe Ubuntu 16.04LTS 64Bit (Unity)

Danke

...zur Frage

Linux: Zugriff auf "-" nicht möglich: Datei oder Verzeichnis nicht gefunden - Was soll ich jetzt tun?

Ich wollte mir auf Linux Minecraft ausführbar machen. Nur voraus ich bin seid meiner Kindheit Windows Nutzer und hab keine Ahnung von Linux. Jedoch kommt beim Ausführen des Befehls : 'chmod a+x ~/Spiele/Minecraft/minecraft.jar' der oben genannte Fehler. Was soll ich jetzt tun?

...zur Frage

Bash Skript mit ja antworten?

Huhu....

Kann man einem Befehl (rpi-update) ein “j“ übergeben bei fragen obwohl es keine eingebaute Möglichkeit bietet? Also wenn ich ein Skript starte mit rpi-update dann kommt das Skript nie zum Ende da der Befehl auf ein h oder n wartet.... Kann.man das irgendwie umgehen bzw gibt es eine Möglichkeit eine Antwort zu senden?

Vielen Dank

...zur Frage

Mehrere Dateien zusammenfügen per Skript?

Hallo, liebe community.

Ich habe auf meiner Festplatte viele Dateien in Ordner. Diese sind aber gesplittet :

Das sind die Ordner

zdf_neo-01032018-1239.pvr
zdf_neo-02032018-1239.pvr
zdf_neo-03042018-1559.pvr
zdf_neo-04042018-1559.pvr
zdf_neo-05032018-1239.pvr
zdf_neo-05042018-1559.pvr
zdf_neo-06032018-1239.pvr
zdf_neo-06042018-1559.pvr
zdf_neo-07032018-1239.pvr
zdf_neo-07042018-1559.pvr
zdf_neo-08032018-1239.pvr
zdf_neo-09032018-1239.pvr
zdf_neo-11042018-1559.pvr
zdf_neo-12042018-1559.pvr
zdf_neo-13042018-1559.pvr
zdf_neo-14032018-1239.pvr
zdf_neo-15032018-1239.pvr
zdf_neo-16032018-1239.pvr
zdf_neo-16042018-1559.pvr
zdf_neo-17042018-1559.pvr
zdf_neo-18042018-1559.pvr
zdf_neo-19042018-1559.pvr
zdf_neo-20032018-1559.pvr

Und in jedem der Ordner sind folgende Dateien :

data0001.ts
data0002.ts
data0003.ts

Nun möchte ich dass die 3 Dateien eines jeden Ordners zusammengefügt werden mittels "copy /b" sodass ich in jedem Ordner nurnoch eine Datei habe.

Wie könnte man es am besten bewerkstelligen?

Egal ob unter Windows oder Linux.

Danke euch!

...zur Frage

Bash: Ausgabe von find mit echo. Wie funktioniert Zeilenumbruch nach jeder Datei?

Ich möchte in meinem Bash-Skript mit find nach Dateien suchen und diese mit echo ausgeben. Folgende Zeile funktioniert:

echo find $1 -size +$2c

Dabei steht im ersten Parameter der Verzeichnisname, im zweiten die Größe der Dateien.

Jetzt hängt echo die Dateinamen in einer Zeile aneinander. Kann ich irgendwie einen Zeilenumbruch nach jedem Dateinamen einbauen?

...zur Frage

Bash: Datumsvergleich

Ich habe noch eine Frage zur Bash-Skript-Programmierung. Ich habe zwei Dateien, die eine hat mein Skript ermittelt, die andere wurde übergeben. Nun habe ich von beiden Dateien das letzte Änderungsdatum in Variablen gespeichert. Diese Daten möchte ich nun vergleichen, aber mein Ansatz unten funktioniert nicht.

if [[ "$TAGUEBERGABE > $TAG" ]]

then

echo "$NAME"

fi

Oder gibt es vielleicht sogar eine einfachere Möglichkeit herausfinden, welche Datei älter oder jünger ist?

...zur Frage

Was möchtest Du wissen?