Executando um executável sem sudo

1

Eu tenho uma pequena função no meu .zshrc . Ele cria um comando para procurar e executar um arquivo executável, que pode ou não existir, no diretório atual ou em um diretório pai em algum lugar no caminho atual. Eu tenho a lógica para encontrar o executável, se existir, no entanto, quando tento executá-lo, recebo o seguinte erro:

Using /Users/username/some/directory/executable_file

function_name:15: no such file or directory: /Users/username/some/directory/executable_file

Gerado pelo seguinte código:

if [[ $current_path != / ]]
  then
    echo "Using $current_path/executable_file"
    "$current_path/executable_file $@"

Esse caminho está correto, pois copiá-lo e colá-lo, ou executar a função com o sudo, funciona perfeitamente. Eu tentei executar a função como usuário atual com sudo -u no script, mas ainda falha.

Como posso executar o script executável, como se o usuário tivesse digitado manualmente, ou pelo menos sem sudo e senha?

    
por RedBassett 02.11.2018 / 16:45

1 resposta

1

A citação em torno desta linha:

"$current_path/executable_file $@"

diz ao shell que há um item a ser encontrado e executado - o que estiver entre as aspas duplas (após as várias expansões de variáveis).

No caso mais simples, sem parâmetros para sua função, ele tentará executar:

"$current_path/executable_file "

... que provavelmente está falhando, mesmo que o arquivo $current_path/executable_file exista, pois há um espaço à direita.

Se você passou parâmetros, a probabilidade é ainda menor que tal arquivo exista, a saber:

"$current_path/executable_file arg1 arg2 arg3..."

Reorganize as aspas para que você tenha protegido a expansão da variável $current_path , mas permitiu que o nome do executável terminasse quando deveria:

"$current_path/executable_file" "$@"
    
por 02.11.2018 / 17:04