Três soluções:
-
Sempre chame seus scripts personalizados com um caminho absoluto, como você mesmo sugere, sem modificar
$PATH
.Isso garantirá que você chame seus próprios scripts quando souber que deseja e que seus scripts não "ocultem" acidentalmente nenhum outro utilitário.
-
Verifique se os caminhos dos scripts personalizados estão localizados no final de
$PATH
, depois dos caminhos para diretórios e diretórios padrão que contêm software de terceiros.Isso tem a desvantagem de que, se acontecer de você ter um script com o mesmo nome de outro utilitário, você chamaria esse utilitário em vez de seu próprio script. Este é o problema inverso do que você está preocupado.
-
Certifique-se de que seus scripts tenham nomes exclusivos e faça como no ponto anterior.
Utilitários do sistema raramente (e utilitários padrão nunca), por exemplo, usam
.sh
como sufixo de nome de arquivo. Você também pode / alternativamente considerar o estabelecimento de um "namespace" como um prefixowally-
em seus próprios scripts (wally-backup.sh
ouwally-getmail
).
Em geral, você deve saber quais nomes os utilitários padrão do Unix têm e evitá-los ( test
, por exemplo, é um nome ruim para um utilitário personalizado). Uma lista de nomes de utilitários padrão está disponível aqui . Da mesma forma, os nomes de utilitários internos especiais não devem ser usados para scripts personalizados. Eles estão listados no final deste link .
Se você modificar seu $PATH
, modifique-o privadamente , ou seja, apenas para o usuário não privilegiado com o qual você faz login. Não o modifique em todo o sistema, a menos que você seja um administrador do sistema em um sistema multiusuário e seus scripts sejam realmente usados por outras pessoas (e seria incômodo para eles modificarem seus próprios $PATH
por um motivo ou outro). Se você modificar o $PATH
do seu sistema, tenha certeza absoluta de que o "problema de sombreamento" não acontece, ou a funcionalidade básica do sistema pode ser comprometida, dependendo de onde o $PATH
pode ser usado.