Tenho um script em minha $HOME/bin
pasta que deve ser executado com sudo
.
se eu correr
sudo <nameofthescript>
eu recebo
sudo: <nameofthescript>: command not found
Qual é a maneira mais preferível de adicionar esse script ao $PATH
of sudo
?
Devo movê-lo /usr/local/sbin
?
Devo criar uma /root/bin
pasta?
sudo
configura um limitedPATH
, portanto, não encontrará seu script local. Você pode configurá-lo para nãoenv_reset
para um determinado usuário e assim por diante, mas talvez o mais simples seja escrever seu própriomysudo
script de uma linha que faça:e então diga
mysudo somecommand ...
em vez desudo somecommand ...
. Ele pedirá ao sudo para executar um shell, definir oPATH
que era e executar o comando encontrado no caminho original.PATH
é uma variável de ambiente em sistemas operacionais como Linux, Windows, que possui um conjunto específico de diretórios onde os programas executáveis estão localizados. De acordo com sua pergunta, seu script executável é colocado no$HOME/bin
diretório. Portanto, se você deseja executar um script que não está no PATH, é necessário fornecer o caminho estrutural completo do arquivo para permitir que o SO alcance o arquivo para executá-lo. Por exemplo,Se você não deseja fornecer o caminho completo do arquivo o tempo todo, pode colocar esse caminho de arquivo no ambiente verdadeiro usando o comando abaixo. Considerando que você manteve seu script no
$HOME/bin
diretório.O comando acima adicionará seu diretório bin ao caminho ambiental e você poderá usá -lo
<nameofscript>
de qualquer lugar do sistema. Além disso, isso só funcionará até o momento em que seu bash estiver em execução; se você tentar o mesmo no novo terminal, seu PATH mudará para o padrão. Para torná-lo permanente, você precisa adicionar a linha abaixo em$HOME/.profile
ou$HOME/.bashrc
arquivo.Para permitir que apenas o usuário root execute o
<nameofscript>
de qualquer lugar, você pode colocar em/sbin
ou/usr/sbin
diretório.