2017-04-11 4 views
1

Bei der Einrichtung von Pfaden in bash wurde mir beigebracht, die plus sign command Ersatzwert-Parameter-Substitution zu verwenden, um robust gegenüber Situationen zu sein, in denen die Variable noch nicht gesetzt ist.tcsh entspricht Bashs unset-variable aware '+' Parameter Substitution Befehl?

export LD_LIBRARY_PATH="/new/libray/path/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" 

Auf diese Weise die LD_LIBRARY_PATH Umgebungsvariable /new/libray/path/:$LD_LIBRARY_PATH gesetzt wird, wenn LD_LIBRARY_PATH bereits gesetzt ist, und nur /new/libray/path/ wenn es nicht ist. (Dies ist weniger wichtig in den Common-Path-Variablen, aber ist eine große Hilfe bei der Arbeit mit Programm-spezifischen Pfadvariablen, wie $PYTHONPATH.)

Leider bin ich in einer Situation, in der ich tcsh anstelle von bash verwenden muss . Gibt es eine gute Alternative zu diesem Bash-Konstrukt in tcsh? Das heißt, was ist der beste Weg LD_LIBRARY_PATH auf /new/libray/path/:$LD_LIBRARY_PATH zu setzen, wenn LD_LIBRARY_PATH bereits gesetzt ist, und es auf nur /new/libray/path/ einzustellen (ohne einen Fehler zu erhöhen), wenn es nicht ist?

Antwort

2

Es gibt keine solche Funktion. Sie müssen die Existenz der Variablen mit einem if:

if ($?LD_LIBRARY_PATH) then 
    setenv LD_LIBRARY_PATH /new/libray/path/:$LD_LIBRARY_PATH 
else 
    setenv LD_LIBRARY_PATH /new/libray/path/ 
endif 
testen