sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #23717
Re: setenv i script (tcsh) ?
On Tue, Jun 13, 2000 at 02:48:53 +0200, Ole Kofoed Hansen wrote:
> >#!/bin/tcsh
Man skal checke at /bin/tcsh findes.
Ofte kan /bin/csh anvendes i stedet hvis det er til scripts.
(hos mig ligger tcsh i /usr/bin/tcsh )
> >setenv DISPLAY min_ip
.....
>
> 1: Hvis det program, som skal bruge display-variablen,
> bliver kaldt i samme script, mangler du nok en export
> kommando. Den er i hvert fald nødvendig i bash for
> at underprocesser får adgang til variable.
i tcsh er "setenv" den der anvendes til at placere variable
i environment. Almindelige variable sættes med "set var=val" .
Så setenv er ok.
> 2: Hvis display-variablen skal være til rådighed
> uden for dit script, er det nok nødvendigt at
> få din shell til at køre det direkte, i stedet for
> som en underproces, da en proces ikke har lov til
> at ændre eller sætte variable for sin forælder.
>
> Jeg kender ikke andet til tcsh, end at jeg ved,
> det er en shell, men i bash gøres det således:
>
> . scriptnavn
>
> når du kalder scriptet.
Præcis det samme i tcsh. Jeg har i tcsh opstartsfilerne
(~/.login eller /etc/csh.login ):
if ( "$TERM" != "xterm" ) then
# konsole:
/bin/echo -ne '\033(K'
else
#Xterm
set tt=`tty|sed 's#/dev/##'`
set tt=`who | fgrep $tt`
set DISP=`echo $tt|sed 's/.*(//' | sed 's/).*//'`
if ( "$DISP" != ":0.0" ) then
setenv DISPLAY $DISP':0.0'
endif
endif
Her sættes DISPLAY variablen korrekt i de fleste tilfælde,
forudsat man ønsker at output havner på samme X som man
logger ind på.
--
mvh Frank Damgaard | http://home3.inet.tele.dk/frda/
References