Unterordner in /usr/local/bin

Usecase

In o.g. Pfad soll durch Unterordner etwas Struktur reinkommen.

ChatGPTs Ansatz für Fish

🧠 Grundlegend

In Fish ist die PATH-Variable eine Liste, nicht ein durch : getrennter String wie in Bash.
Du bearbeitest sie so:

set -U fish_user_paths /mein/pfad $fish_user_paths

📍 Schritt für Schritt: z. B. /usr/local/bin/ssh in den PATH

1. Ordner existiert und enthält deine Skripte

✅ Hast du schon:

/usr/local/bin/ssh/remoteaccess.ssh

2. Fish dauerhaft sagen, dass er dort suchen soll

set -U fish_user_paths /usr/local/bin/ssh $fish_user_paths

🔒 Das speichert Fish in ~/.config/fish/fish_variables.

3. Neue Shell starten – oder:

exec fish

Jetzt kannst du in Fish direkt remoteaccess.ssh tippen, Tab-Vervollständigung funktioniert (sofern das Skript ausführbar ist), und du brauchst keinen Symlink.


✅ Kontrolle: Ist der Pfad drin?

echo $PATH

→ Sollte ... /usr/local/bin/ssh enthalten

Oder:

contains /usr/local/bin/ssh $PATH

→ Gibt nichts aus = nein
→ Gibt Pfad aus = ja


🧽 Entfernen eines Eintrags

Falls du es rückgängig machen willst:

set -eU fish_user_paths

oder selektiv:

set -U fish_user_paths (string match -v /usr/local/bin/ssh $fish_user_paths)

🧠 Bonus: $fish_user_paths vs $PATH

  • $PATH = aktuelle Liste aller gültigen Pfade
  • $fish_user_paths = von dir definierte, benutzerbezogene Pfade, die beim Start automatisch in $PATH eingemischt werden

Damit hast du dauerhaft saubere Kontrolle, ohne Systemdateien wie /etc/profile oder /etc/environment anfassen zu müssen. Ideal für eigene Skriptverzeichnisse.


ChatGPTs Ansatz für Bash

🔧 Vorgehen im Detail:

1. Ordnerstruktur anlegen

sudo mkdir -p /usr/local/bin/meine_tools
sudo chown -R root:root /usr/local/bin/meine_tools
sudo chmod 755 /usr/local/bin/meine_tools

2. Skript dort ablegen

sudo nano /usr/local/bin/meine_tools/myscript.sh

Und dann z. B. sowas reinschreiben:

#!/bin/bash
echo "Hallo Welt!"

Dann ausführbar machen:

sudo chmod +x /usr/local/bin/meine_tools/myscript.sh

3. Unterordner in den PATH aufnehmen

Temporär (nur für aktuelle Shell):

export PATH="/usr/local/bin/meine_tools:$PATH"

Dauerhaft z. B. für alle Nutzer:

echo 'export PATH="/usr/local/bin/meine_tools:$PATH"' | sudo tee -a /etc/profile.d/meine_tools.sh
sudo chmod +x /etc/profile.d/meine_tools.sh

Nach einem Neustart (oder source /etc/profile) ist dein Unterordner dann systemweit verfügbar.


💡 Alternative: Symbolische Links in /usr/local/bin

Wenn du dein Ordnerchaos lieber im Griff behalten willst, kannst du die eigentlichen Skripte in Unterordnern lassen, aber Symlinks ins /usr/local/bin-Verzeichnis setzen:

sudo ln -s /usr/local/bin/meine_tools/myscript.sh /usr/local/bin/myscript

Dann brauchst du den Unterordner nicht zum $PATH hinzufügen, und alles bleibt sauber und standardkonform.


Fazit

✅ Ja, geht.
📌 Besser: Unterordner mit Bedacht nutzen oder Symlinks setzen.
⚠️ Wenn du keine Änderungen an $PATH willst, dann Symlinks bevorzugen.