(gelöst) Nutzer $PATH, Anpassung für Nutzerscripte

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

(gelöst) Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 14:36:25

Ich baste gerade an eine Nutzerscript, s2pdf.sh (scan2pdf), es ist wohl noch fehlerhaft, aber eines nach dem anderen:

A)
Wo speichere ich sinnvollerweise Nutzerscripte?
Ich habe dafür ~/bin/ auserkoren. Einwände?

B)
Dieser Pfad ist nicht in meinem $PATH. In meinem Nutzer /home gibt es keine .profile Datei. Ich nehme an das ich als Nutzer PATH von irgendeinem Systemsetting erbe. Wie mache ich das am geschicktesten, so dass ich ein Nutzerscript ohne Pfad starten kann?

Danke vorab.
Zuletzt geändert von michaa7 am 21.08.2024 16:47:17, insgesamt 1-mal geändert.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
MSfree
Beiträge: 11604
Registriert: 25.09.2007 19:59:30

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von MSfree » 21.08.2024 14:59:17

michaa7 hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 14:36:25
Wo speichere ich sinnvollerweise Nutzerscripte?
Wenn es Skripte sind, die nur ein Nutzer ausführen können soll, bietet sich ~/bin an. Wenn aber alle Nutzer, die sich auf dem System einloggen können, die Skripte ausführen können sollen, wäre /usr/local/bin eine Alternative.
Dieser Pfad ist nicht in meinem $PATH.
Wirklich?
Hast du das mit

Code: Alles auswählen

echo $PATH
geprüft?

Normalerweise wird PATH automatisch um $HOME/bin ergänzt. Zumindest wenn man Nutzerkonnten mit adduser anlegt. Dann nämlich werden die Vorlagen für .profile und .bashrc aus /etc/skel kopiert. Du kannst diese Dateien natürlich auch nachträglich von /etc/skel in dein $HOME kopieren.

HumiNi
Beiträge: 554
Registriert: 02.10.2014 21:46:18

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von HumiNi » 21.08.2024 15:07:27

Für solche Sachen eignet sich /usr/local/bin (für eigene Scripte, die alle lokalen User nutzen sollen), $HOME/bin und $HOME/.local/bin.

Code: Alles auswählen

ich@lumpi:~$ grep PATH /etc/profile
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"

Code: Alles auswählen

ich@lumpi:~$ grep -A 2 PATH .profile
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
Es macht übrigens viel wacher, den Kaffee über die Tastatur zu kippen, statt ihn zu trinken.

HumiNi
Beiträge: 554
Registriert: 02.10.2014 21:46:18

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von HumiNi » 21.08.2024 15:11:17

MSfree hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 14:59:17
Normalerweise wird PATH automatisch um $HOME/bin ergänzt.
Nicht immer, das Verzeichnis muss existieren.
Es macht übrigens viel wacher, den Kaffee über die Tastatur zu kippen, statt ihn zu trinken.

michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 15:20:05

MSfree hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 14:59:17
...
Hast du das mit

Code: Alles auswählen

echo $PATH
geprüft?
...
Ja.

Code: Alles auswählen

~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Das script (siehe anderes posting) wird/soll nur von mir ausgeführt werden. Da es meiner Ansicht nach harmlos ist könnte es auch für alle Nutzer zugänglich sein. Aber da sowieso ausschließlich ich an diesem Rechner sitze ist das egal. Für mich ist es daher mehr eine grundsätzliche Überlegeung für dieses und vllt zukünftige Skripte, auf die ich möglicherweise wirklich exklusiven Zugriff behalten möchte. Das möchte ich jetzt nach kompetentem Rat so einrichten. Mir scheint es am sinnvollsten dies in /home/<ich>/??? einzurichten.

Wie kurz und schmerzlos?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 15:28:03

HumiNi hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 15:07:27
Für solche Sachen eignet sich /usr/local/bin (für eigene Scripte, die alle lokalen User nutzen sollen), $HOME/bin und $HOME/.local/bin.

Code: Alles auswählen

ich@lumpi:~$ grep PATH /etc/profile
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"

Code: Alles auswählen

ich@lumpi:~$ grep -A 2 PATH .profile
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
*Jetzt* (naja, schon seit längerem) existiert /home/<ich>/bin/ . Ich werde aus deinem code nicht schlau, obwohl ich verstehe dass der den userpfad wohl um um den gewünschten neuen ergänzt. Mir ist jedoch nicht klar was ich ausführen oder irgendwohin kopieren muss.

Eine klitzekleine größtmögliche Hilfestellung wäre .... hilfreich ;-)
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
MSfree
Beiträge: 11604
Registriert: 25.09.2007 19:59:30

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von MSfree » 21.08.2024 15:50:35

michaa7 hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 15:20:05
Wie kurz und schmerzlos?
Kopier dir einfach die Vorlagedatei aus /etc/skel in dein Home:

Code: Alles auswählen

cp /etc/skel/.profile $HOME
Dann wird der Pfad wie oben erwähnt, ergänzt (nach aus- und wieder einlogen).

HumiNi
Beiträge: 554
Registriert: 02.10.2014 21:46:18

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von HumiNi » 21.08.2024 15:59:51

michaa7 hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 15:28:03
*Jetzt* (naja, schon seit längerem) existiert /home/<ich>/bin/ . Ich werde aus deinem code nicht schlau, obwohl ich verstehe dass der den userpfad wohl um um den gewünschten neuen ergänzt. Mir ist jedoch nicht klar was ich ausführen oder irgendwohin kopieren muss.
Dies ist nicht mein Code, sondern ein Ausschnitt von /etc/profile und .profile, wie sie automatisch bei der Debian-Installation angelegt werden. Normalerweise ist da gar nichts zu tun.
Wenn du keine .profile hast, wurde dein Useraccount wohl nicht mit Standardmitteln angelegt.
Das Muster der .profile sollte als /etc/skel/.profile vorliegen. Kannst du kopieren und die Rechte setzen (auf 644).

Siehe auch die Hinweise von MSfree.

EDIT: Da war ich wieder zu langsam. :wink:
Es macht übrigens viel wacher, den Kaffee über die Tastatur zu kippen, statt ihn zu trinken.

michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 16:04:12

Hab ich gemacht. Und mich neu angemeldet!

Dennoch, "~/bin/s2pdf.sh test.pdf" funktioniert, "s2pdf.sh test.pdf" funktionier *nicht*: Befehl nicht gefunden.

?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

HumiNi
Beiträge: 554
Registriert: 02.10.2014 21:46:18

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von HumiNi » 21.08.2024 16:08:11

Mach folgendes und zeige den Output:

Code: Alles auswählen

cd
echo $PATH
ls -l .profile
ls -l bin
Ergänzung: Die .profile wird nur in einer login-Shell ausgeführt, also nicht, wenn du über eine grafische Oberfläche ein Terminal öffnest.
Es macht übrigens viel wacher, den Kaffee über die Tastatur zu kippen, statt ihn zu trinken.

michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 16:20:29

HumiNi hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 16:08:11
Mach folgendes und zeige den Output:

Code: Alles auswählen

cd
echo $PATH
ls -l .profile
ls -l bin

Code: Alles auswählen

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Code: Alles auswählen

$ ls -l .profile
-rwxr-xr-x 1 mh fuse 807 21. Aug 15:58 .profile

Code: Alles auswählen

$ ls -l bin
insgesamt 79928
-rw-r--r--  1 mh mh      17743 12. Jan 2021  accomp.ods
-rwxr-xr-x  1 mh mh       1563 11. Jan 2021  accomp.sh
-rw-r--r--  1 mh fuse       89 16. Apr 2017  cl.txt
-rwxrwxr-x  1 mh mh        426 30. Mär 00:28 detect_sh.bin
-rw-r--r--  1 mh mh       2896 15. Jan 2021  dialogrc
-rwxr-xr-x  1 mh fuse      199  4. Okt 2014  diff-cp
drwxr-xr-x 11 mh mh       4096 13. Feb 2021  ff
-rw-r--r--  1 mh mh      72668 23. Aug 2018  gksu_2.0.2-9+b1_amd64.deb
-rwxr-xr-x  1 mh mh        494  4. Jan 2021  hg-blink.sh
-rw-r--r--  1 mh mh      98964 23. Aug 2018  libgksu2-0_2.0.13_pre1-9+b2_amd64.deb
-rwxr-xr-x  1 mh fuse      121 14. Aug 2012  mnom-p.sh
drwxr-xr-x 10 mh fuse     4096 29. Okt 2012  Opera_Mobile_Emulator_12.1_Linux
-rwxrwxr-x  1 mh mh        432 21. Aug 15:53 s2pdf.sh
-rwxr-xr--  1 mh mh       2349 15. Jan 2021  schleife.sh
drwxr-xr-x  2 mh mh       4096  4. Mär 2023  scripte
-rw-r--r--  1 mh mh   80888290 17. Mär 2020  skypeforlinux-64.deb
-rw-r--r--  1 mh fuse   101416  4. Aug 2018  sysvinit_2.88dsf-59.7_amd64.deb
-rwxr--r--  1 mh mh         86 12. Jan 2021  test.sh
-rw-r--r--  1 mh mh      19970 31. Okt 2019  tkusr_0.82_all.deb
-rw-r--r--  1 mh mh        317 22. Mär 2020  tkusr.txt
-rwxrwxr-x  1 mh mh       1518 30. Mär 12:53 xz_detect.sh
Keines der scripte läßt sich direkt aufrufen!
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

HumiNi
Beiträge: 554
Registriert: 02.10.2014 21:46:18

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von HumiNi » 21.08.2024 16:28:27

Du bist nicht in einer login-shell. Schieb dein Script nach /usr/local/bin.
Es macht übrigens viel wacher, den Kaffee über die Tastatur zu kippen, statt ihn zu trinken.

michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 16:29:27

HumiNi hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 16:08:11
Mach folgendes und zeige den Output:

Code: Alles auswählen

cd
echo $PATH
ls -l .profile
ls -l bin
Ergänzung: Die .profile wird nur in einer login-Shell ausgeführt, also nicht, wenn du über eine grafische Oberfläche ein Terminal öffnest.
Ok, das ist es. Habe es getestet. In einer login-Shell funktioniert das. Nur ist das ja ein Umstand. Meine scripte will ich natürlich in einem Terminal wie xterm ect. ausführen. Gibt es ne Lösung ohne vollständigen Pfad?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von 4A4B » 21.08.2024 16:32:17

Alternativ dies in die ~/.bash_aliases:

Code: Alles auswählen

export PATH="$HOME/bin:$PATH"
... und danach ein Terminal neu öffnen

dasebastian
Beiträge: 2123
Registriert: 12.07.2020 11:21:17

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von dasebastian » 21.08.2024 16:36:36

Vielleicht eher in die ~/.bashrc :wink:

michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 16:38:13

Ok, kopiert nach /usr/local/bin funktioniert das Script auch im xterm. Das wäre das letzte woraum ich alleine gekommen wäre. Danke, besonders für diesen Hinweis. Damit ist auch klar wohin zukünftige scripte kommen.

Ich gehe davon aus dass es aus Sicherheitsgründen notwendig ist dass nur root nach /usr/local/bin schreiben darf?

Danke an euch beide!
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 16:40:47

4A4B hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 16:32:17
Alternativ dies in die ~/.bash_aliases:

Code: Alles auswählen

export PATH="$HOME/bin:$PATH"
... und danach ein Terminal neu öffnen
Grundsätzlich gefiele mir auch diese Lösung. Nur, wenn normalerweise nur root nach /usr/local/bin schreiben darf, ist das dann nciht eine Sicherheitslücke dies so zu umgehen (ich durchblicke die unterscheidlichen Gegebenheiten nicht wirklich!)?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
4A4B
Beiträge: 962
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von 4A4B » 21.08.2024 16:48:21

michaa7 hat geschrieben:Ich gehe davon aus dass es aus Sicherheitsgründen notwendig ist dass nur root nach /usr/local/bin schreiben darf?
Ja, die dort gespeicherten Scripte können ja von allen Nutzern eines Systems verwendet werden. Eigene Scripte kann ein Nutzer deswegen in ~/bin unterbringen.

@dasebastian

Ja stimmt, .bashrc ist hier eher angebracht :) (.bash_aliases sollte aber auch funktionieren, da sie standardmäßig inkludiert wird)

michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: (gelöst) Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 17:00:21

Ok, die Ergänzung in der .bashrc funktioniert. Danke an alle!
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

tobo
Beiträge: 2335
Registriert: 10.12.2008 10:51:41

Re: (gelöst) Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von tobo » 21.08.2024 17:18:47

michaa7 hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 17:00:21
Ok, die Ergänzung in der .bashrc funktioniert.
Das ist sozusagen schlecht, Bash-unspezifisches Zeug in Bash-spezifischen Konfigurationsdateien unterzubringen. Verwendest du mal eine andere Shell - und sei es auch nur zu Testzwecken - dann funktioniert dieses Zeug einfach nicht mehr!
Schau', dass du grundsätzlich eine Login-Shell aufmachst und schreibe dieses Shell-unabhängige Zeug nach ~/.profile oder schreibe zumindest dieses ganze Shell-unabhängige Zeug in eine eigene Datei und lade sie dann entsprechend in allen Shell-Konfigurationsdateien.

dasebastian
Beiträge: 2123
Registriert: 12.07.2020 11:21:17

Re: (gelöst) Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von dasebastian » 21.08.2024 17:26:15

Die ~/.bashrc ist aber schon ein sehr gängiger Weg für Normaloendbenutzer, tobo.

Es gibt ja eine Menge "bash-unspezifisches" Zeug, dass trotzdem dort untergebracht wird, wie zB. Parameter einzelner Programme uÄ.

michaa7
Beiträge: 4916
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: (gelöst) Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von michaa7 » 21.08.2024 18:14:40

tobo hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 17:18:47
michaa7 hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 17:00:21
Ok, die Ergänzung in der .bashrc funktioniert.
Das ist sozusagen schlecht, Bash-unspezifisches Zeug in Bash-spezifischen Konfigurationsdateien unterzubringen. ...
Ich denke ich verstehe deinen Einwand. Aber bitte habe Verständnis, dass ich das nun so lasse wie es ist. Ich bin bash Laie und werde es bleiben. Ich bin um jede Funktion froh die ich hier noch lernen kann und happy über jedes script welches ich mir mit der Hilfe anderer zusammenbastle. Dass ich je auf eine andere shell umsteige ist so wahrscheinlich wie dass mir der Himmel auf den Kopf fällt.

Du hast bestimmt recht, aber für mich muß das praktikabel bleiben. Eine Login-shell ist ... nur umständlich ... für meinen Gebrauch. Ich danke dir für deinen Hinweis!
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

dasebastian
Beiträge: 2123
Registriert: 12.07.2020 11:21:17

Re: (gelöst) Nutzer $PATH, Anpassung für Nutzerscripte

Beitrag von dasebastian » 23.08.2024 06:38:49

tobo hat geschrieben: ↑ zum Beitrag ↑
21.08.2024 17:18:47
Das ist sozusagen schlecht, Bash-unspezifisches Zeug in Bash-spezifischen Konfigurationsdateien unterzubringen. Verwendest du mal eine andere Shell - und sei es auch nur zu Testzwecken - dann funktioniert dieses Zeug einfach nicht mehr!
Tobo, magst du vielleicht die von dir favorisierte Herangehensweise in Wiki-Artikel zum Thema Bash-Konfiguration weitergeben, wir könnten 2 Unterpunkte machen, einmal Bash-spezifisch einmal Bash-unspezifisch.

Bei Fragen auch gerne PIN.

Antworten