Molto dipende da quando questi programmi devono essere eseguiti e da quando hai bisogno dei loro risultati. Se non importa quando corrono (ovvero, i loro risultati non variano con il tempo), allora potrebbe essere meglio farli funzionare dal tuo ~/.profileo ~/.bash_profile(cioè, quando accedi) piuttosto che dal tuo ~/.bashrc.
Se hai bisogno dei loro risultati, ma non puoi aspettare i 5 secondi necessari per farli funzionare, cosa farai per i primi 5 secondi che la tua shell è attiva? Non è possibile eseguire comandi che dipendono dagli output di tali programmi, poiché i risultati non saranno ancora disponibili.
Penso che se descrivi più in dettaglio esattamente quali sono i requisiti, potremmo essere in grado di darti risposte migliori.
Detto questo, potresti lanciare i tuoi programmi in background come suggerito da Dennis Williamson, e farli scrivere i loro risultati su alcuni file nella tua home directory. Quindi è possibile impostare la variabile bash PROMPT_COMMANDin modo che generi tali file, cosa che bash farebbe prima di ogni visualizzazione di PS1.
Ad esempio, supponiamo che il tuo programma in background scriva export ans=42nel file ~/answeral termine. Nel tuo ~/.bashrc, metti
PROMPT_COMMAND=". ~/answer"
Quindi, ogni volta che viene visualizzata la shell PS1, verrà originariamente sorgente ~/answere il tuo ambiente alla fine (ad es. 5 secondi dopo l'avvio) conterrà la variabile anscon il valore 42.
Ovviamente, i primi 5 secondi dopo l'avvio della shell, ~/answerconterranno i valori dell'ultima volta che hai avviato una shell, quindi dovresti decidere se è importante (e come reimpostare quel file se necessario).
profile, ogni volta che viene creato un nuovo terminale. Grazie Apple.