Indipendenza dalla shell nei gruppi di programmazione

0

Il nostro ambiente di programmazione dipende da determinate variabili d'ambiente impostate. Ad esempio, per utilizzare distcc , è necessario definire la variabile di ambiente DISTCC_HOSTS . Il modo in cui gestiamo questo è costringere ogni sviluppatore a source un file tcshrc globale quando si richiama una nuova shell. Il file globale tcshrc contiene istruzioni per impostare le variabili di ambiente (tra l'altro).

Tuttavia, questo è terribilmente discriminatorio dato che ogni sviluppatore è forzato a usare tcsh poiché l'impostazione di una variabile d'ambiente è diversa per shell.

La soluzione più ovvia a questo problema è quella di avere i corrispondenti file globali bashrc e zshrc , ma che ovviamente diventa ingombrante dal momento che ora dobbiamo mantenere tre file diversi che contengono tutti la stessa logica.

Esistono soluzioni pulite per risolvere questo tipo di situazione?

    
posta Ixrec 21.01.2011 - 04:42
fonte

3 risposte

3

Una volta che hai sorgente il tcshrc globale (che non dovresti aver bisogno di fare (metti alcuni comandi in $ (HOME) /. tcshrc per fare il lavoro)).

Tutto quello che devi fare è avviare la tua shell preferita.
La tua shell erediterà tutto l'ambiente dal suo genitore.

> source /bla/tcshrc
> bash
bash >

In realtà puoi farlo tutto nel tuo file .tcshrc:

# Set up your environment
source /bla/tcshrc
# Start your favorite shell here
bash
# When bash exits this shell exits.
# I would not do this last line but for compleness
exit
    
risposta data 21.01.2011 - 06:10
fonte
1

Potresti scrivere uno script che contenga le informazioni sull'ambiente e generi il .whatever corretto per la shell corrispondente.

    
risposta data 21.01.2011 - 05:15
fonte
1

Una soluzione semplice sarebbe utilizzare un formato neutro per le definizioni delle variabili di ambiente, ad es. in alcuni file env.file

VARIABLE value

e per generare automaticamente gli script di impostazione per diverse shell, ad es. per bash

awk '{ print "export "$1"="$2 }' < env.file > bashrc

o per tcsh

awk '{ print "setenv", $1", "$2 }' < env.file > tcshrc

Questo sembra essere in realtà uno dei casi in cui una soluzione programmatica risolve un problema sociale.

    
risposta data 21.01.2011 - 07:53
fonte

Leggi altre domande sui tag