/ etc / profilo che non è stato originato per le shell di login

0

Il flag -l in sh dovrebbe generare il contenuto di /etc/profile e altri script di profilo come ~/.profile , che generalmente forniscono l'insieme iniziale di variabili d'ambiente per una sessione di accesso.

Con questo in mente, eseguo il comando env -i sh -l -c env e aspetto di vedere un nuovo ambiente più le modifiche apportate da /etc/profile . Tuttavia, /etc/profile non viene mai fornito, nonostante sia il presunto comportamento del flag -l . Su altri sistemi non MacOS, questo flag -l fa sì che /etc/profile venga caricato correttamente.

Perché questo non funziona su MacOS, e come posso assicurarmi che gli script del profilo siano correttamente acquisiti nell'ordine corretto come sarebbero all'accesso? (Nota che non voglio una sessione di shell interattiva)

    
posta Score_Under 31.07.2017 - 15:32
fonte

1 risposta

1

A differenza di altri sistemi, sh è il suo binario compilato come se tu avessi chiamato bash --posix . Dal Bash Reference Manual:

The POSIX startup files are executed ($ENV) rather than the normal Bash files.

env -i elimina ogni variabile d'ambiente. Anche aggiungerlo come env -i ENV=/etc/profile non funziona.

Invece di sh usa solo bash :

env -i bash -l -c env
    
risposta data 31.07.2017 - 17:40
fonte

Leggi altre domande sui tag