Die Antwort von Jordan ist falsch. /etc/profilewird nicht von allen Shells beschafft. Wie Sie weisen darauf hin, ist es nicht von Quellen csh, tcsh- ich bin nicht sicher zsh. Es wird von Bourne Shell ( sh) -Derivaten wie Korn Shell ( ksh) und BASH ( bash) bereitgestellt . cshverwendet /etc/login. Menschen, die dazu neigen, ausschließlich Borne Shell-Derivate zu verwenden, neigen dazu, andere Schalen zu vergessen. Sie fügen etwas hinzu, um zu /etc/profileerwarten , dass es für "alle Benutzer" gilt, und sind dann überrascht, wenn der ungerade C-Shell-Benutzer (und wir sind eine ungerade Menge) nicht über das Zeug verfügt, in dem sie konfiguriert sind /etc/profile.
Trotzdem neigen die Leute dazu, andere Borne Shell-Derivat-Shells zu vergessen. Wenn sie bashoder verwenden ksh, können sie Syntax hinzufügen, /etc/profiledie in Bourne Shell nicht gültig ist, beispielsweise eine Variable definieren und in dieselbe Zeile exportieren. Dann bekommen Sie ein Skript, das funktioniert #!/bin/shund die Syntax unterdrückt. /etc/profilesollte sich an die Bourne Shell-kompatible Syntax halten.
Ebenso sollten Sie sich an Ihre eigene halten .profile(verwenden .bash_profileSie diese Option, wenn Sie eine Bash-Syntax wünschen) - es kann ein bisschen mehr Tipparbeit sein, aber es ist mehr Tipparbeit, die Sie alle einmal ausführen. Verweis ${HOME}und nicht ~, etc. Einige Unix- und Cron-Versionen laufen unter sh, jede Ihrer Zeilen wird von Makefileverarbeitet. shWenn Sie also mit mehreren UNIX-Versionen arbeiten, lohnt es sich wirklich, Ihre .profileBourne-Shell kompatibel zu halten . Als SysAdmin kann ich Ihnen nicht sagen, wie oft ich jemandem geholfen habe, indem ich .profiledie Bourne Shell-Kompatibilität behoben habe .
Unter Linux /bin/shist es ein Link zu /bin/bashund wenn Sie es ausführen, sieht es nach dem Pfad aus, der zum Ausführen verwendet wurde, und beschränkt sich (theoretisch) nur auf Dinge, die von Bourne Shell unterstützt werden. Ebenso viunter Linux beschränkt sich das eigentlich vimwieder. Gelegentlich sehen Sie Merkmale "durchbluten". Gelegentlich wird das so vimtun, als würde vies etwas tun, was dies nicht vimunterstützt, viweil die Autoren vimvergessen haben, dies im "vi Abwärtskompatibilitäts" -Modus zu deaktivieren. Es würde mich nicht wundern, wenn so zu bashtun, als ob es shähnliche "Durchblutungs" -Funktionen gäbe . Wäre nicht überrascht, wenn eine Funktion "unter Borne Shell unter Linux funktioniert", aber nicht auf einem System V- oder BSD-basierten UNIX (AIX, OpenBSD usw.).
Does it have positive ... and understood.Was versuchst du hier zu sagen? Ich habe alles andere als diesen Absatz verstanden.