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 alias
Befehl 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