2012-07-21 6 views
13

He pasado algún tiempo de calidad buscando POSIX standard for the shell para los comandos source y ., y estoy convencido de que simplemente no están allí.¿El estándar `fuente` POSIX de la shell es?

¿Hay alguna carcasa que no sea compatible con .? ¿Cuál es la forma estándar de POSIX de ejecutar un script de shell en el entorno actual (es decir, no generar una subshell, por lo que si el script dice export VAR=value, entonces VAR existe en el shell que realiza la llamada)?

podría estar perdiendo algo obvio, pero resulta que . no es muy fácil de Google ...

+0

Es poco probable que la familia de shells C shell soporte '.' como sinónimo de' source', que es su manera nativa de escribir la misma operación. –

Respuesta

13

Es allí bajo "dot".

NOMBRE

dot - ejecutar comandos en el entorno actual

SINOPSIS

. archivo

[etc.]

+2

Sí, el comando '.' es estándar. Pero tenga en cuenta que el alias 'fuente' disponible en bash y algunos otros shells modernos es * no * parte de POSIX. –

14

. está normalizado (POSIX 2004, 2008).

source no es estándar y, específicamente, no se admite en ash, o dashpdksh (por lo que probablemente no es el original, Shell Korn tampoco). Es decir, es un Bashismo.

+2

El shell C usó 'source' en lugar del' .' que fue utilizado por el shell Bourne. El shell Korn usó '.' para ser compatible con el shell Bourne. Se importó en 'bash' por razones que no están claras, pero hace que los migrantes de C shell se sientan como en casa, y es más fácil de indexar que' .' [dot] (http://pubs.opengroup.org/onlinepubs/9699919799 /utilities/V3_chap02.html#dot). –

Cuestiones relacionadas