la réponse de jordanm est incorrecte. /etc/profile
ne provient pas de tous les obus. Comme vous le soulignez, il ne provient pas par csh
, tcsh
- Je ne suis pas sûr zsh
. Il provient de sh
dérivés Bourne shell ( ), comme Korn Shell ( ksh
) et BASH ( bash
). csh
utilise /etc/login
. Les personnes qui ont tendance à utiliser exclusivement des dérivés de Borne Shell ont tendance à oublier que d’autres coquilles existent. Ils ajoutent quelque chose à /etc/profile
attendre de s’appliquer à «tous les utilisateurs» et sont ensuite surpris lorsque l’utilisateur impair de C Shell (et nous sommes un lot étrange) n’a pas les éléments qu’il a configurés /etc/profile
.
Même dans ce cas, les gens ont tendance à oublier qu’il existe d’autres coquilles dérivées de Borne Shell. S'ils utilisent bash
ou ksh
, ils se sentent libres d'ajouter une syntaxe /etc/profile
qui n'est pas valide dans Bourne Shell, comme par exemple définir une variable et l'exporter sur la même ligne. Ensuite, vous obtenez un script qui fait #!/bin/sh
et cela étouffe la syntaxe. /etc/profile
devrait s'en tenir à la syntaxe compatible Bourne Shell.
De même, vous devriez vous en tenir à votre propre .profile
usage (à utiliser .bash_profile
si vous voulez une syntaxe bash) - cela peut être un peu de frappe supplémentaire, mais c'est une frappe supplémentaire que vous faites une fois. Référence ${HOME}
et non ~
, etc. Certaines variantes de tâches Unon, cron s'exécutent sh
, chaque ligne de votre Makefile
est traitée par sh
. Par conséquent, si vous travaillez sur plusieurs versions d'UNIX, il est très utile de garder votre .profile
shell Bourne compatible. En tant qu'administrateur système, je ne peux pas vous dire combien de fois j'ai aidé des personnes en les .profile
rendant compatibles avec Bourne Shell.
Sous Linux, /bin/sh
est un lien vers /bin/bash
et lorsque vous l'exécutez, il recherche le chemin utilisé pour l'exécuter et (en théorie) se limite aux éléments pris en charge par Bourne Shell. De même, vi
sur Linux se vim
limite vraiment , encore une fois. Parfois, vous voyez des fonctionnalités "saigner à travers". Parfois, vim
prétendre être vi
fera quelque chose qui le vim
supporte, vi
car les auteurs de ont vim
oublié de le désactiver en mode "compatibilité ascendante vi". Je ne serais pas surpris si vous bash
prétendez être sh
doté de fonctionnalités similaires. Ne seriez pas surpris si certaines fonctionnalités "fonctionnent sur Borne Shell sous Linux", mais pas sous UNIX basé sur System V ou BSD (AIX, OpenBSD, etc.).
Does it have positive ... and understood.
Qu'est-ce que vous essayez de dire ici? J'ai tout compris sauf ce paragraphe.