Die Antwort von Jordan ist falsch. /etc/profile
wird 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 . csh
verwendet /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/profile
erwarten , 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 bash
oder verwenden ksh
, können sie Syntax hinzufügen, /etc/profile
die in Bourne Shell nicht gültig ist, beispielsweise eine Variable definieren und in dieselbe Zeile exportieren. Dann bekommen Sie ein Skript, das funktioniert #!/bin/sh
und die Syntax unterdrückt. /etc/profile
sollte sich an die Bourne Shell-kompatible Syntax halten.
Ebenso sollten Sie sich an Ihre eigene halten .profile
(verwenden .bash_profile
Sie 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 Makefile
verarbeitet. sh
Wenn Sie also mit mehreren UNIX-Versionen arbeiten, lohnt es sich wirklich, Ihre .profile
Bourne-Shell kompatibel zu halten . Als SysAdmin kann ich Ihnen nicht sagen, wie oft ich jemandem geholfen habe, indem ich .profile
die Bourne Shell-Kompatibilität behoben habe .
Unter Linux /bin/sh
ist es ein Link zu /bin/bash
und 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 vi
unter Linux beschränkt sich das eigentlich vim
wieder. Gelegentlich sehen Sie Merkmale "durchbluten". Gelegentlich wird das so vim
tun, als würde vi
es etwas tun, was dies nicht vim
unterstützt, vi
weil die Autoren vim
vergessen haben, dies im "vi Abwärtskompatibilitäts" -Modus zu deaktivieren. Es würde mich nicht wundern, wenn so zu bash
tun, 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.