$ PATH referindo-se a rede fs: geralmente útil, ocasionalmente horrível

3

Alguns dos scripts que eu executo estão localizados em um sistema de arquivos CIFS hospedado em outra máquina. Eu montei esse sistema de arquivos pela rede e adicionei o local remoto dos scripts ao meu $ PATH. Isso funciona muito bem em condições normais. No entanto, se a máquina remota ficar off-line ou desligar por algum motivo, ela poderá tornar a utilização da linha de comando totalmente horrível, já que todas as etapas de conclusão ou de comando da guia bloqueiam a procura de programas no host remoto. Abrir uma nova janela de terminal também trava quando o shell é iniciado.

Qual é uma boa maneira de melhorar esse problema, mantendo a utilidade do mecanismo de pesquisa $ PATH?

    
por Aaron Brick 19.02.2017 / 08:24

1 resposta

2

Uma solução alternativa que pode funcionar para você é criar vários scripts de wrapper em um diretório local e colocá-los em seu caminho de pesquisa em vez do diretório remoto. Isso não é uma panacéia: você precisa atualizar os wrappers toda vez que o conteúdo do diretório remoto mudar. Mas desta forma não há acesso ao arquivo remoto, a menos que você esteja executando o programa.

Você precisa de um link simbólico e não de um script de wrapper, pois a conclusão às vezes verifica se os arquivos são executáveis, o que significa uma chamada de stat nos arquivos. Mas todos os wrappers podem ser links simbólicos para um único arquivo executável.

  • De uma vez por todas, crie um diretório local ~/remote-scripts e um arquivo executável ~/remote-scripts/.remote-wrapper contendo

    #!/bin/sh
    exec "/remote/path/bin/${0##*/}" "$@"
    
  • Para atualizar ~/remote-scripts , execute este snippet:

    find ~/remote-scripts -type l -exec rm {} +
    for x in /remote/path/bin/*; do ln -s .remote-wrapper ~/remote-scripts/"${x##*/}"; done
    
  • Coloque ~/remote-scripts no seu PATH .

por 20.02.2017 / 00:00

Tags