• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

PATH setzen für eigene Batch-Dateien ?

abgdf

Guru
Hallo Freunde des Pinguins,

unter DOS konnte ich meine eigenen Batch-Dateien ".bat" erstellen, diese etwa in einem Verzeichnis C:\bats ablegen und in der autoexec.bat den Path auf

PATH C:\BATS

setzen. Dann konnte ich meine Batch-Dateien von jedem Verzeichnis aus ausführen.

Wie geht sowas unter SuSE 8.1 ?

Ich will zum Beispiel, wenn ich in /root/ oder in /home/user/ bin, schnell die Floppy mounten.
Ich habe, sagen wir eine Datei "mountfl" in /root/bats/. Die Datei enthält

cd /media
mount floppy
cd /root/

Wie kann ich von /root/ oder von /home/ aus "mountfl" oder "sh mountfl" eingeben, um "mountfl" auszuführen ?

Wie und wo muß ich den PATH setzen ?

Vielen Dank für eure Antworten

abgdf
 

admine

Ultimate Guru
Da gibts verschiedene Möglichkeiten.
Entweder beim Aufruf den vollständigen Pfad angeben.
Oder das Script in ein Verzeichnis deiner Path-Variable der bash schreiben.
Oder in der .bashrc des Users folgenden Eintrag ergänzen

Code:
export PATH=.:$PATH

Letzteres aber mit Vorsicht zu genießen, da du damit Sicherheitsvorkehrungen aushebelst.
 

imat

Member
Als User hast du automatisch einen Path auf /home/<user>/bin gesetzt. Du must also nur in deinem Home ein Verzeichnis "bin" anlegen und dort deine persönlichen Scripte ablegen.

Für den User root gilt dieses jedoch nicht.

Wenn du ein Skript global ablegen willst, damit jeder User und Root darauf Zugriff hat, musst du dieses am besten als User Root unter /usr/local/bin
ablegen, da hier per default immer ein Path gesetzt ist (User und root).

Wenn du an der globalen Path Einstellung für ALLE User etwas ändern willst,
dann schau dir die Datei /etc/profile an. In dieser Datei wird der Pfad für alle gesetzt. Änder das aber nicht in dieser Datei, sondern erstell eine Datei
/etc/profile.local und erweitere dort den Path, da eventuell bei einem Paketupdate die Datei /etc/profile überschieben wird.

Beispiel "/etc/profile.local"
Code:
PATH=$PATH:/pfad/zu/mehr/bin
export $PATH

Wenn du als User deinen Pfad ändern willst ist der beste Platz die Datei
".profile" in deinem Homedir .
 
OP
A

abgdf

Guru
Hallo nochmal,

ich habe meine kurzen, ausführbaren Skripte nach

/usr/local/bin

getan.

Sie werden tadellos erkannt. Jetzt tippe ich etwa statt startx gnome nur kurz x.
Super !

Vielen Dank für eure Hilfe.
Ihr seid klasse.

abgdf
 

deac

Member
willst du dir das "sh" vor "sh mountfl" ersparen, brauchst nur als erste zeile in deinem skript

"#!/bin/sh" rein schreiben
 

padersuse

Hacker
@imat

Hallo,

das mit dem PATH-Befehl hast Du sehr schön erklärt. Nehmen wir an, man installiert die neueste Version von Samba in einem eigenen Verzeichnis (mit bin und sbin Unterverzeichnis), wie setzt man dann den PATH-Befehl nur für root, der ja als einziger den Dienst starten sollte. Oder gibts dafür eine andere Lösung ? Ich könnte natürlich das Programm mit den Befehlen configure, make und make install so installieren, dass die sbin Befehle im Verzeichnis /usr/sbin landen, aber die Deinstallation wäre zu aufwendig. Aber ein automatisches Starten der Dienste wäre doch wünschenswert, wobei ich jetzt nicht daran gedacht habe, Links in die /usr/sbin Verzeichnisse zu legen.

Padersuse
 

mayestro

Newbie
Die "andere Lösung" kann natürlich so aussehen, daß die entsprechenden Dateien nur für den "root", dem sie ja auch gehören sollten, ausführbar sind:

chown root:root <filename>
chmod 700 <filname>


das ist der beste Schutz gegen ungewollte Zugriffe.
Allerdings kannst du die Datei dann wirklich auch nur noch als "root" ansehen, ändern und ausführen.

Alternativ kannst du auch noch einem Samba-User (der natürlich angelegt sein muß) Zugriff gewähren, indem du ihm die Gruppe "smbusr" (auch anlegen) zuordnest und dann die o.g. Befehle modifizierst:

chown root:smbusr <filename>
chmod 770 <filename>


Gruß
mayestro
 
Oben