odpowiedź jordanma jest nieprawidłowa. /etc/profile
nie pochodzi od wszystkich muszli. Jak zauważyłeś, nie pochodzi od csh
: tcsh
- Nie jestem pewien zsh
. Pochodzi z sh
pochodnych Bourne'a ( ), takich jak Korn Shell ( ksh
) i BASH ( bash
). csh
wykorzystuje /etc/login
. Ludzie, którzy używają wyłącznie pochodnych Borne Shell, zwykle zapominają o istnieniu innych powłok. Dodają coś, by /etc/profile
oczekiwać, że zastosuje się to do „wszystkich użytkowników”, a następnie są zaskoczeni, gdy dziwny użytkownik powłoki C (a my jesteśmy dziwni) nie ma rzeczy, w których skonfigurowali /etc/profile
.
Mimo to ludzie zapominają o istnieniu innych powłok pochodnych Borne Shell. Jeśli używają bash
lub ksh
, mogą dodawać do nich składnię, /etc/profile
która nie jest poprawna w powłoce Bourne'a, na przykład definiowanie zmiennej i eksportowanie jej w tym samym wierszu. Potem dostajesz skrypt, który działa #!/bin/sh
i dusi się w składni. /etc/profile
powinien trzymać się składni kompatybilnej z Bourne Shell.
Podobnie, powinieneś trzymać się go samemu .profile
(użyj, .bash_profile
jeśli chcesz trochę składni bash) - może to być trochę dodatkowe pisanie, ale jest to dodatkowe pisanie, które robisz za jednym razem. Odnośnik, ${HOME}
a nie ~
itd. Niektóre smaki Uniksa, zadania cron są uruchamiane sh
, każda linia Makefile
jest przetwarzana sh
, więc jeśli pracujesz nad wieloma odmianami UNIX, naprawdę opłaca się utrzymać .profile
kompatybilność powłoki Bourne'a. Jako SysAdmin nie mogę powiedzieć, ile razy pomogłem komuś, ustawiając go tak, .profile
aby był zgodny z Bourne Shell.
W Linuksie /bin/sh
jest linkiem do, /bin/bash
a kiedy go uruchomisz, wygląda na ścieżkę, która została użyta do jego uruchomienia i (teoretycznie) ogranicza się tylko do rzeczy obsługiwanych przez Bourne Shell. Podobnie vi
w Linuksie tak naprawdę vim
znów się ogranicza. Czasami widzisz funkcje „przenikające”. Czasami vim
udawanie vi
, vim
że vi
robi , robi coś, co nie obsługuje, ponieważ autorzy vim
zapomnieli wyłączyć to w trybie „wstecznej kompatybilności”. Nie zdziwiłbym się, gdyby bash
udawanie, że sh
ma takie podobne cechy. Nie zdziwiłbym się, gdyby jakaś funkcja „działała na Borne Shell w systemie Linux”, ale nie w systemie UNIX opartym na systemie V lub BSD (AIX, OpenBSD itp.).
Does it have positive ... and understood.
Co próbujesz tu powiedzieć? Zrozumiałem wszystko inne niż ten akapit.