Existe algum comando para fazer o csh reler todos os diretórios em seu caminho no FreeBSD?

1

Estou tendo um problema estranho no FreeBSD9 usando csh como meu shell. Os programas recém-instalados que estão no meu caminho só serão iniciados se eu reiniciar o shell csh . Eu acho isso muito chato.

Eu acho que csh pesquisa os caminhos uma vez e não os reviso até que você os saia. Como você o força a se atualizar? Existe algo que você pode colocar no .cshrc para parar de fazer isso? (Eu estou acostumado a bater, e eu não vejo nada parecido acontecendo em bash.)

    
por Warren P 18.11.2012 / 06:02

2 respostas

3

O shell Unix C hashes seus diretórios de caminho de pesquisa para ajudá-lo a encontrar executáveis mais rapidamente. Mas ele desenvolve pontos cegos se você adicionar novos executáveis a esses diretórios depois que ele já tiver feito seu hash. A solução é usar o comando rehash para informar que ele deve reconstruir seu hash. Como alternativa, você pode desativar o hash de caminho completamente (usando um pequeno desempenho) usando o comando unhash .

(Fwiw, eu concordo que isso é um comportamento irritante. Eu uso um hash de caminho no meu próprio shell Hamilton C , mas o meu é inteligente o suficiente para descobrir pontos cegos e repará-los automaticamente.)

    
por 18.11.2012 / 06:09
0

Se você estiver usando uma versão atual de tcsh (atualmente tenho tcsh 6.20.00 (Astron) 2016-11-24 ), você pode set autorehash (por exemplo, em ~/.cshrc ou no prompt) para ativar a verificação automática de diretórios 'path' se necessário para (como bash). Por página de manual do tcsh:

  autorehash (+)
     If set, the internal hash table of the contents of the directories in the
     path variable will be recomputed if a command is not found in the hash table.  
     In addition, the list of available commands will be rebuilt for each command
     completion or spelling correction attempt if set to 'complete' or 'correct' 
     respectively;  if set to 'always', this will be done for both cases.

Embora haja alguns casos de borda, conforme observado na seção de comando rehash da página do manual do tcsh:

rehash  Causes the internal hash table of the contents of the directories
        in the path variable to be recomputed.
        ...
        With autorehash, a new command will be found automatically, except
        in the special case where another command of the same name
        which is located in a different directory already exists in the
        hash table.  Also flushes the cache of home  directories built
        by tilde expansion.
    
por 27.09.2018 / 18:56

Tags