PATH de várias linhas no tcsh

2

Inspirado pela resposta aceita a este tópico , estou tentando replicar uma construção semelhante no tcsh (versão 6.14.00) sem sorte:

setenv new_PATH (
/some/path
/some/other/path

# Some comments
/foo/path

# Another group
/bar/path

$PATH) # Attach $PATH at the end in case we had previous declarations

setenv PATH 'sed -e '/^#/'d -e '/^$/'d << EOF | paste -d ":" -s $new_PATH'

Eu recebo o erro " Too many ('s ". O que estou fazendo errado?

    
por Amelio Vazquez-Reina 11.03.2013 / 22:54

3 respostas

2

Você pode fazer isso:

set path = (        \
    /this/dir       \
                    \
# This is a comment \
                    \
    /that/dir       \
    /another/dir    \
)

Outra abordagem é ler os nomes dos diretórios de um arquivo:

set path = ()
foreach dir ('/bin/cat path.txt')
    set path = ( $path $dir )
end

Note que eu precisava especificar /bin/cat desde que eu acabei de perder meu $PATH .

Você pode substituir cat por algo que filtra comentários (como um simples comando sed - ou melhor, /bin/sed -).

Isso terá problemas com caminhos de diretório que tenham espaços ou outros caracteres engraçados, mas você deve tentar evitá-los de qualquer maneira.

    
por 12.03.2013 / 01:16
2

setenv define variáveis de ambiente e não podem ser matrizes. setenv tem a sintaxe de um comando comum.

O comando set pode definir uma variável shell como matriz. Você precisa colocar todos os elementos na mesma linha.

set new_PATH = ( /some/path /some/other/path … )

O tcsh sincroniza a variável shell path com a variável de ambiente PATH , portanto, você não precisa fazer isso manualmente.

set new_PATH = ( /some/path /some/other/path … )
set new_PATH = ( $new_PATH /more )
set path = $new_PATH

ou diretamente

set path = ( /some/path /some/other/path … )
    
por 11.03.2013 / 23:59
1

tcsh define a variável de ambiente para o PATH da seguinte forma: setenv PATH /path

e adiciona à variável da seguinte forma: set PATH ($PATH /add/path/here /another/here)

Se você passar a variável de ambiente para si mesma, você pode simplesmente adicionar a ela o formulário onde ela está atualmente definida.

Veja como as variáveis de ambiente são facilmente definidas. Não há razão para um script. É um comando para definir a variável.

NOTA para o OP: Você está definindo a última linha que a variável deve definir set PATH ($PATH <then issue sed> ).

    
por 12.03.2013 / 00:39

Tags