Aliase in .bash_profile funktionieren nicht

Aliase in .bash_profile funktionieren nicht

Ich habe einige cd blah blah-Befehle als Alias ​​in mein .bash_login eingefügt, um das Wechseln zwischen Verzeichnissen zu erleichtern. Es hat gut funktioniert. Doch plötzlich funktioniert keiner der Aliase mehr. Es heißt „Befehl nicht gefunden“. Ich habe keine Ahnung, warum es plötzlich nicht mehr funktioniert. Irgendwelche Vorschläge? (Ich habe mein System neu gestartet.)

Ich entschuldige mich, ich wollte eigentlich .bash_login schreiben

Antwort1

Aliase werden nicht exportiert. Das heißt, ein in einer Shell definierter Alias ​​ist nicht Teil der Umgebung, die von untergeordneten Shells übernommen wird. Daher ist der beste Ort zum Definieren von Aliasen Ihre ~/.bashrc, nicht Ihre ~/.bash_profile oder ~/.profile, da die erste von jeder interaktiven Shell verwendet wird, während die beiden letzteren nur von Login-Shells verwendet werden.

Antwort2

Verwenden Sie den aliasBefehl in der Shell, um zu bestätigen, ob sie wirklich erstellt werden oder nicht. Verwenden Sie außerdem nur das Mac-Programm Terminal.app? Irgendwo in den Optionen sollte eine Einstellung sein, mit der Sie es so konfigurieren können, dass eine sogenannte Login-Shell verwendet wird. So wird die .bash_profile-Datei bezogen.

Antwort3

Die Datei .bash_profile wird beim Start wahrscheinlich nicht von Ihrer Shell gelesen. Viele Distributionen haben so etwas in ihrer Standard-.bashrc:

if [ -f ~/.bash_profile ]; then
        . ~/.bash_profile
fi

Wenn Sie es nur für Aliase verwenden, empfehle ich Ihnen, die Datei ~/.bash_aliases zu nennen:

if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
fi

Es prüft lediglich, ob die Datei existiert, und führt, wenn ja, die darin enthaltenen Befehle aus. In Ihrem Fall die Alias-Befehle. Fügen Sie diese in Ihre .bashrc-Datei ein, und Ihre Probleme sollten gelöst sein.

EDIT: Eigentlich ist es etwas komplizierter. Meine Lösung wird funktionieren, aber das hier ist lesenswert.bash_profile vs. .bashrc

PS: Ein Neustart ist selten notwendig, um ein Problem auf einem *nix-System zu beheben. Höchstens ein Abmelden und erneutes Anmelden.

Antwort4

Wenn Sie das Wechseln von Verzeichnissen vereinfachen möchten, sehen Sie sich Folgendes an $CDPATH:

CDPATH The search path for the cd command.  This is a colon-separated list of
       directories in  which  the shell looks for destination directories
       specified by the cd command. A sample value is ".:~:/usr".

Fügen Sie anhand des obigen Beispiels Folgendes zu Ihrem Profil hinzu:

CDPATH=.:~:/usr

Dann können Sie, unabhängig davon, in welchem ​​Verzeichnis Sie sich befinden, problemlos auf die Unterverzeichnisse von ~oder zugreifen /usr.

$ pwd
/var/log
$ cd bin
$ pwd
/usr/bin

verwandte Informationen