← Back to team overview

sslug-teknik team mailing list archive

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