Befehle im Verzeichnis nur zur interaktiven Nutzung verwenden?

Befehle im Verzeichnis nur zur interaktiven Nutzung verwenden?

Ich habe ein bin/Unter $HOME. Dieses enthält einige erweiterte Versionen gängiger Befehle. Daher möchte ich nicht, dass diese Befehle von Skripten verwendet werden, sondern nur im interaktiven Einsatz.

Das Beste, was ich tun kann, um hinzuzufügen

for f in ~/bin/*
do
    alias "$(basename $f)"="$f"
done

zu meinem ~/.bash_profile? Oder gibt es eine andere Lösung?

Antwort1

Sie können auch die folgenden Zeilen zu Ihrem hinzufügen .bashrc, wodurch das nur festgelegt wird, PATHwenn Sie sich in einer interaktiven Shell befinden.

if [ "$PS1" ]
then
    export PATH=~/bin:$PATH
fi

Antwort2

Sie können Umgebungsmodule verwenden, um ein Modul manuell zu aktivieren (laden), das den gewünschten Pfad festlegt

module load homebin

So würde das Homebin-Modul aussehen

#%Module1.0
prepend-path PATH ~/bin

http://modules.sourceforge.net

Antwort3

Es hängt davon ab, welche Shell und (leider) welches System Sie verwenden. Bash beispielsweise verwendet unterschiedliche Startdateien, je nachdem, ob es als interaktive oder nicht-interaktive Shell verwendet wird, wie imBash-Handbuch.

export PATH=$HOME/bin:$PATHIm Prinzip sollten Sie in der Lage sein, Ihrer Datei etwas hinzuzufügen ~/.bashrc, das dann nur für interaktive Shells ohne Anmeldung ausgeführt wird. In der Praxis sind einige Systeme so konfiguriert, dass sie ~/.bashrcauch für nicht interaktive Shells lesen.

Ähnliche Fragen:

verwandte Informationen