c erro da variável de ambiente shell: “Bad: modifier in $”

3

Estou usando o tcsh e defino uma variável ambiental da seguinte forma:

setenv mycomp [email protected]

para que, quando eu precisar copiar arquivos do my.computer.com remoto, eu digite o seguinte:

scp $mycomp:sourcepath destpath

Mas quando eu faço isso, recebo o seguinte erro: "Bad: modifier in $ (m)." onde (m) é o primeiro caractere após o cólon.

O que esse erro está me dizendo e como posso corrigi-lo?

    
por marshall.ward 18.01.2011 / 00:04

2 respostas

6

Expansão variável com dois pontos depois de tratar as letras após o cólon como modificadores.

Por exemplo, $dir:h significa expandir $dir com o modificador h . h significa cabeça, ou seja, tudo exceto a última parte do caminho.

% set dir=/home/user
% echo $dir:h
/home

Todas as informações estão na página do manual tcsh (1):

History substitution

   ...

   The word or words in a history reference  can  be  edited,  or  ‘‘modi-
   fied’’,  by following it with one or more modifiers, each preceded by a
   ‘:’:

       h       Remove a trailing pathname component, leaving the head.
       t       Remove all leading pathname components, leaving the tail.
       r       Remove a filename extension ‘.xxx’, leaving the root  name.
       e       Remove all but the extension.
       u       Uppercase the first lowercase letter.
       l       Lowercase the first uppercase letter.
       s/l/r/  Substitute  l  for  r.
       ...


Variable substitution

   ...

   The ‘:’ modifiers described  under  History  substitution,  except  for
   ‘:p’,  can be applied to the substitutions above.

Você pode evitar o modificador agrupando o nome da variável entre chaves, por exemplo,

scp ${mycomp}:sourcepath destpath
    
por 18.01.2011 / 00:17
0

Embora eu não tenha um ambiente tcsh para testar isso, eu acho que quando o shell está procurando por sua variável de ambiente, ele não está dividindo: e procurando por $ mycomp: sourcepath como toda a variável nome.

Eu tentaria aliasing seu comando scp.

    
por 18.01.2011 / 00:11