Você realmente quer fazer isso apenas no tcsh? O Csh e seu derivado tcsh têm muitas dessas peculiaridades . Você está melhor com outro shell como o bash, etc.
Neste caso particular, parece que jogar um par de parênteses mantém o tcsh feliz. Isto também está documentado no manual do tcsh:
expr may contain the operators
*
,+
, etc., as in C. If expr contains<
,>
,&
or|
then at least that part of expr must be placed within()
.
mint13:~> echo $version
tcsh 6.17.06 (Astron) 2011-04-15 (x86_64-unknown-linux) options wide,nls,dl,al,kan,rh,nd,color,filec
mint13:~> @ y = 1001; @ z = 0110;
mint13:~> @ x = $y|$z
110: Command not found.
mint13:~> @ x = ($y|$z)
mint13:~> echo $x
1007
Você já deve estar ciente disso - tcsh está lendo 1001 e 0110 como números decimais. Eu não sei como entender os números binários.