Quali opzioni passa Terminal per bash all'avvio?

1

Nelle preferenze di Terminale, sono in grado di configurare il Terminale in "Apri shell con:" - > "Comando (percorso completo):" /opt/local/bin/bash .

Quali opzioni passa il terminale quando si richiama questo comando? Terminale sembra che esegua ogni shell come shell di login, quindi suppongo che venga passato --login ?

C'è qualche documentazione Apple che fornisce una panoramica di esattamente ciò che viene eseguito quando apri una finestra di terminale?

    
posta cdwilson 24.12.2013 - 00:20
fonte

2 risposte

2

Nessun argomento è passato. Il terminale esegue login -pfq $USER $PROGRAM , che a sua volta esegue il programma specificato. login segnala al programma che si tratta di una shell di login anteponendo un - a argv[0] (il nome del programma).

Per la shell predefinita, Terminal in realtà fa qualcosa di diverso. Invoca login -pfl $USER /bin/bash -c exec -la bash /bin/bash , in cui l'opzione -l per l'accesso dice a non di eseguire il comando come shell di login, mentre l'opzione -l a exec dice di eseguire il suo argomento come shell di login (aggiungendo il trattino). Il motivo mentre questo è fatto è che login imposta anche la directory corrente nella directory home dell'utente quando esegue un programma come shell di login, mentre exec no. Ciò consente al Terminale di aprire shell nella stessa directory corrente della scheda corrente, senza login che la riporta alla directory home.

    
risposta data 24.12.2013 - 05:39
fonte
2

Il comando:

/opt/local/bin/bash

essenzialmente istruisce Terminal.app a caricare una shell bash interattiva (il percorso per il tuo esempio è probabilmente la versione di Macports). Inizialmente, quando apri Terminal, viene avviata una sessione di shell di login (in bash). Le shell di login possono leggere file come ~/.profile , ~/.bash_profile che configurano le variabili di ambiente per la sessione, quindi ciò che viene eseguito è per lo più indicativo di ciò che viene configurato all'interno di tali file.

In generale, per impostazione predefinita, quando si apre una shell bash da Terminale, queste cose verrebbero eseguite:

Processi

bash
login

Apri file e porte

/bin/bash
/usr/lib/dyld
/private/var/db/dyld/dyld_shared_cache_x86_64
/dev/ttys000 

Ulteriori informazioni:

Official Bash Website

Apple Man Page: bash(1)

    
risposta data 24.12.2013 - 02:47
fonte

Leggi altre domande sui tag