Script überall ausführen oder Alias für Befehl?

  • Hallo zusammen

    Bin aktuell ein wenig mit Scripten und Bash beschäftigt, stehe da aber noch ziemlich am Anfang. Ich kann ja problemlos in den Ordner navigieren und dort ./mein_script.sh ausführen. Dazu zwei Fragen:

    1. kann ich Scripte auch so einrichten, dass diese an jeder Stelle ausgeführt werden können? Also ohne in den Ordner zu navigieren und natürlich ohne den Pfad im prompt angeben zu müssen

    2. kann man für Scripte und Befehle eigentlich Aliase anlegen? Also dass z.B. script1 ausreicht, um ein bestimmtes Script auszuführen? Oder sowas wie

    scanmylan stellvertretend für nmap -sn -oG - 192.168.178.0/24

    💾 AMD EPYC 7452 (8 Cores) 40GB | 💾 Unraid Homeserver i5-4570 16GB

    💻 Ryzen 9 7900X RX7800XT 32GB | 💻 MacBook Pro M2Pro 32GB

    EndeavourOS <3

  • Wenn du einen Befehl ausführst, durchsucht Bash die in der Umgebungsvariablen $PATH enthaltenen Ordner nach einer passenden ausführbaren Datei. Wenn du dein Skript in einem dieser Ordner speicherst, kannst du es ohne weitere Angaben starten.

    Bei den meistens Distributionen gehört z.B. $HOME/.local/bin/ zu diesen Ordnern.

  • Theoretisch kannstmdu ein Alias ausführen das müsste theoretisch irgendwie so gehen:

    Code
    alias meinalias='bash ~/meinscript.sh'

    Wahrscheinlich ist es hier aber besser mit Verknüpfungen bzw. Symlinks zu arbeiten. In der Regel ist /usr/local/bin bzw /home/deinbenutzername/.local/bin Bereits als PATH hinterlegt.

    Prüfen kannst du das im Terminal mit:

    Code
    echo $PATH

    Nun kannst du eine Verknüpfung zu deinem Script an einem der beiden Orten legen. Dann die Terminal Session neustarten und es müsste bei eingabe vom Dateinamen der Verknüpfung direkt ausgeführt werden.

    Script verfügbar für alle Nutzer:

    Code
    sudo ln -s /pfad/zu/deinem/script /usr/local/bin

    Oder Script nur für deinen Nutzer nutzbar:

    Code
    ln -s /pfad/zu/deinem/script /home/deinbneutzername/.local/bin

    Wichtig ist, dass deine Scriptdatei (Bash-Scripte haben in der Regel .sh Dateiendungen) als ausführbar markiert ist. Entweder über die Nautilus per Rechtsklick -> Eigenschaften oder:

    Code
    chmod +x /pfad/zu/deinem/script

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Oder hier als Nachtrag wie es diesch sagt du sparst dir das ganze mit den Verknüpfungen und speicherst das Script direkt im entsprechenden Ordner ab.

    Als ausführbar markieren solltest du es aber trotzdem.

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • Bei mir zeigt $Path  nach /usr/local/sbin

    Würde gerne $HOME/.local/bin/ oder ein anderes Verzeichnis in $HOME verwenden.

    Wie kann ich die $Path Variable ändern?

    Vielleicht in der config.fish für FISH-Shell oder .bashrc für die BASH-Shell ?

    Nachtrag: echo $PATH sagt ...

    Code
    gonzo on arch-linux ~ 
     ->  echo $PATH
    /usr/local/sbin /usr/local/bin /usr/bin /home/gonzo/.dotnet/tools /usr/bin/site_perl /usr/bin/vendor_perl /usr/bin/core_perl

    Fragen Sie jemanden, der sich damit auskennt - am besten nicht den Administrator

    Archlinux Openbox / ASUS R503C-SX051H - Intel Core i3-2350M + HD-Grafik 3000 + 8 GB DDR3 + 490 GB SSD
    Archlinux Xfce / DELL Inspiron 3542 - Intel Pentium 3558U + 8 GB DDR3 + 490 GB SSD
    Voidlinux Xfce / DELL Inspiron 15z - Intel Core i5-3317U + 4 GB RAM + 240 GB SSD

    2 Mal editiert, zuletzt von Gonzo-3004 (10. Februar 2023 um 18:17)

  • In die .bashrc sowas reinschreiben:

    Wichtig ist nachher kurz den Nutzer Ab- und wieder Anmelden:

    Code
    export PATH="$HOME/.local/bin:$PATH"

    --
    Ciao!

    Linux Nutzer seit über 20 Jahren. I ❤️ Freedom!

    Offizieller Proton-Botschafter aus der Schweiz 🇨🇭 😅

    Meine Haupt-Distribution ist Ubuntu.

    Mein Blog: https://rueegger.me

    Wer meinen sinnlosen Gedanken folgen möchte, kann dies gerne auf Mastodon tun: https://swiss.social/@srueegger

  • In die .bashrc sowas reinschreiben:

    Wichtig ist nachher kurz den Nutzer Ab- und wieder Anmelden:

    Code
    export PATH="$HOME/.local/bin:$PATH"

    Ok Super, das hat für die BASH schonmal funktioniert :thumbup:

    Für FISH muss dann fish_add_path $HOME/.local/bin in die config.fish ;) (habe ich gerade bei Tante Google gefunden) ^^

    Fragen Sie jemanden, der sich damit auskennt - am besten nicht den Administrator

    Archlinux Openbox / ASUS R503C-SX051H - Intel Core i3-2350M + HD-Grafik 3000 + 8 GB DDR3 + 490 GB SSD
    Archlinux Xfce / DELL Inspiron 3542 - Intel Pentium 3558U + 8 GB DDR3 + 490 GB SSD
    Voidlinux Xfce / DELL Inspiron 15z - Intel Core i5-3317U + 4 GB RAM + 240 GB SSD

  • Bei manchen Distributionen steht so was auch in der ~/.profile drin.

    And still, we will be here, standing like statues.

    Schinder und Knarren, statt Kinder und Narren...

    Alles ist so unsagbar schnell geworden.
    (EROC, Let's Gläntz)

    Vertrauen muss verdient werden. Man verschenkt es nicht.

    Ich stelle keine dummen Fragen. Du musst Dich mit Deinen Antworten schon ein bisschen anstrengen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!