Estou tentando chamar python dentro de um script bash, mas o script não consegue encontrá-lo. Não programo scripts bash há mais de 30 anos, então não sou adepto da depuração de scripts bash no momento. Estou usando pyenv para selecionar a versão do python a ser usada em um diretório específico. Aqui está a configuração que estou usando:
dnessett@homelserv:~/SaltSource/scripts$ ls
python_on_root.sh
dnessett@homelserv:~/SaltSource/scripts$ cat python_on_root.sh
#!/bin/bash
sudo python "$@"
dnessett@homelserv:~/SaltSource/scripts$ pyenv local 3.10.15
dnessett@homelserv:~/SaltSource/scripts$ python --version
Python 3.10.15
dnessett@homelserv:~/SaltSource/scripts$ ./python_on_root.sh
sudo: python: command not found
Como estou usando sudo dentro do script para chamar python, aqui está a entrada em /etc/sudoers que eu esperava que permitisse que o sudo executasse o interpretador python local:
#add python to sudo list
dnessett homelserv=(root)NOPASSWD:/home/dnessett/.pyenv/versions/3.10.15/bin/python
dnessett é o nome de usuário e homelserv é o nome da máquina. O caminho após NOPASSWD é onde a versão 3.10.15 do python está localizada.
O objetivo disso é usar o script python_on_root.sh como interpretador para um projeto Eclipse/PyDev (veja: tópico do Stack Overflow ).
Como é aparente na saída dada acima, sudo não consegue encontrar python, mesmo que eu o tenha definido como o interpretador python local dentro de ~/SaltSource/scripts. Imagino que haja alguma interação entre o script e sudo que esteja impedindo que o último encontre o interpretador python pretendido.
Alguém pode ver o problema e me aconselhar como corrigi-lo?