Відповідь Йордана невірна. /etc/profile
виводиться не всіми оболонками. Як ви зазначаєте, це не є джерелом csh
, tcsh
- я не впевнений у цьому zsh
. Він походить від sh
похідних Bourne shell ( ), таких як Korn Shell ( ksh
) та BASH ( bash
). csh
використовує /etc/login
. Люди, які схильні використовувати виключно похідні Borne Shell, як правило, забувають про існування інших оболонок. Вони додають щось, /etc/profile
очікуючи, що це застосується до "всіх користувачів", а потім дивується, коли у непарного користувача C Shell (а у нас це дивна партія) немає речей, які вони налаштовували /etc/profile
.
Незважаючи на це, люди, як правило, забувають про інші похідні оболонки Borne Shell. Якщо вони використовують bash
або ksh
, вони не соромляться додавати синтаксис до того, /etc/profile
що не відповідає дійсності в Bourne Shell, наприклад скажімо, визначаючи змінну та експортуючи її в той самий рядок. Потім ви отримуєте якийсь сценарій, який це робить, #!/bin/sh
і він задавлюється синтаксисом. /etc/profile
має дотримуватися сумісного синтаксису Bourne Shell.
Так само вам слід дотримуватися його самостійно .profile
(використовуйте, .bash_profile
якщо ви хочете трохи синтаксису баш) - це може бути трохи зайвим введенням тексту, але це додаткове введення, яке ви робите все один раз. Довідково, ${HOME}
а не ~
і т. Д. Деякі аромати Unix, задачі на роботі з хроном, обробляються під sh
кожним вашим рядком Makefile
, обробляється sh
, тому якщо ви працюєте в декількох ароматах UNIX, це дійсно платить за те, щоб зберегти .profile
сумісність оболонки Bourne. Як SysAdmin, я не можу сказати вам, скільки разів я допомагав комусь, налаштовуючи їх .profile
на сумісність Борна Шелла.
В Linux /bin/sh
- це посилання на те, /bin/bash
і коли ви запускаєте його, він виглядає шляхом, який використовувався для його запуску, і (теоретично) обмежується лише речами, які підтримує Bourne Shell. Так само і vi
в Linux справді vim
, знову обмежує себе. Іноді ви бачите функції, які "кровоточать". Іноді vim
прикидаючись vi
, що зробить щось, що vim
підтримує vi
це не тому, що автори vim
забули відключити це в режимі "vi назад" сумісності ". Я не був би здивований, якби bash
прикидався, що sh
має якісь подібні функції "кровоточити". Не здивуєшся, якщо якась функція "працює на Borne Shell в Linux", але не на UNIX (AIX, OpenBSD тощо) на базі System V або BSD.
Does it have positive ... and understood.
Що ви тут намагаєтеся сказати? Я зрозумів усе, крім цього абзацу.