
Ich habe ein einfaches Skript mit der Erweiterung .sh
in meinem Home-Verzeichnis geschrieben, das ich direkt in meinem Home-Verzeichnis ausführen kann, aber ich möchte das Skript von jedem Verzeichnis aus ausführen, in dem ich mich befinde. Was soll ich tun?
Antwort1
Interaktiv können Sie Ihre Skripte immer durch Eingabe ~/yourscript.sh
in die Befehlszeile ausführen. Dies ist jedoch sehr einschränkend, insbesondere wenn Sie weitere Skripte schreiben möchten, die die bereits geschriebenen Skripte aufrufen.
Ein integrierterer und flexiblerer Ansatz besteht darin, alle Ihre Skripte in einem Verzeichnis abzulegen und dieses Verzeichnis zu Ihrer PATH
Umgebungsvariable hinzuzufügen.
Anschließend können Sie eingeben yourscript.sh
. Unabhängig davon, in welchem Verzeichnis Sie sich befinden, findet die Shell Ihr Skript und führt es aus.
Normalerweise wird es folgendermaßen gemacht:
- Erstellen Sie ein
bin
Verzeichnis unter Ihrem Home-Verzeichnis und fügen Siemv
Ihre Skripte dort ein. - Ändern Sie alle Skripte in ausführbare Dateien (
chmod +x
). - Stellen Sie sicher, dass Ihre
PATH
Umgebungsvariable Ihr Verzeichnis enthält . Auf einigen Systemen wird Ihr Verzeichnis$HOME/bin
standardmäßig automatisch hinzugefügt. Überprüfen Sie es daher vor der Änderung.~/.profile
$HOME/bin
PATH
~/.profile
Lassen Sie mich dies anhand eines Skripts veranschaulichen:
mkdir ~/bin
mv ~/*.sh ~/bin
chmod +x ~/bin/*
if ! grep 'PATH=.*HOME/bin' ~/.profile
then
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.profile
fi
. ~/.profile
echo "$PATH" # you should see your bin directory
cd /tmp # change to another random directory
type myscript.sh # see if the shell finds your scripts
Wenn Sie Ihr bin
Verzeichnis in Ihrem sehen PATH
, empfiehlt es sich, sich abzumelden und erneut anzumelden, in ein anderes Verzeichnis zu wechseln und die Ausführung type yourscript.sh
erneut durchzuführen, um sicherzustellen, dass alles richtig eingerichtet ist.