comando não encontrado usando sudo no script

0

Eu estou tentando executar o comando sudo dentro de um script bash.

#!/bin/bash

sudo node app.js

e isso me joga:

sudo: node: command not found

Se eu tentar executar apenas o nó app.js (sem sudo), ele será executado corretamente.

Se eu tentar apenas executar sudo -h , ele imprime a ajuda do sudo.

Mas, quando estou tentando o sudo node app.js , ele me lança o erro.

    
por George 29.06.2016 / 16:33

1 resposta

4

Parece que node está em um caminho não padrão ou, pelo menos, não no caminho da raiz. Existem algumas maneiras de contornar isso.

  1. Use o caminho completo para node

    • Encontre o caminho completo usando which node

    • Se estiver em /home/user/bin/node , ligue para sudo /home/user/bin/node app.js

    • Ou como @UlrichSchwarz sugeriu que você pode combinar os dois com a substituição de comando: sudo $(which node) app.js

    • Lembre-se de que o usuário você sudo precisa de permissões de leitura / execução no local, e não um problema maior quando você sudo to root

  1. Chame sudo com a opção -E para preservar as variáveis de ambiente

    • sudo -E node app.js

    • Isso manterá seu $PATH de antes de sudo

    • Você pode ver a% man_de% da página para obter mais informações: link

por 29.06.2016 / 16:44