Local não sudo para script

0

Estou tentando converter um script em lote simples em um pacote. De acordo com meu entendimento (limitado) de empacotamento, isso significaria que eu armazenaria o script em /usr/bin .

O problema é que o script em lote usa um script sh diferente armazenado em outro lugar. O script sh não pode ser executado como sudo e o script sh precisa ler / gravar em arquivos no diretório do script sh. O que isso significa é que eu preciso ter um local para armazenar esse script (e os arquivos que ele usa) sem exigir sudo . Isso seria possível?

(BTW, como o script também baixa arquivos para o diretório home dos usuários ( ~ ), eu não posso fazer alguém executar o script com sudo porque a propriedade do arquivo é então incorretamente manipulada com os arquivos baixados. seria consertável.)

    
por Ev1l0rd 26.02.2016 / 17:23

1 resposta

1

Execução manual

Você pode executar o comando usando bash /path/to/your.sh . Se você definir o arquivo como executável ( chmod +x /path/to/your.sh ), poderá executar /path/to/your.sh e ele será executado automaticamente no bash. Você precisará verificar se o script tem um shebang .

$ PATH

Visão geral

$ PATH é uma variável de ambiente que lista todos os locais nos quais você gostaria de procurar binários ao executar um comando.

É assim que /usr/bin é usado para binários.

Você pode ver seu $ PATH atual abrindo um terminal e executando echo $PATH .

/most/important/path:/less/important/path

Como o exemplo acima lê, os caminhos têm prioridades; primeiro procurou primeiro. Isso significa que, se houver duas versões de um binário, a que está no primeiro caminho será usada. Uma vez que um binário é encontrado, ele pára de procurar em outros diretórios em seu $ PATH.

Se você tentar executar banana , seu computador examinará /most/important/path . Se encontrar banana , ele será executado. Caso contrário, ele continuará pesquisando, passando para /less/important/path .

Modificação

Para adicionar diretórios ao caminho do usuário, você pode adicioná-los ao seu arquivo ~/.bashrc . Em vez de sobrescrever e atrapalhar seu caminho, você deve anexá-lo a ele. Por exemplo:

export $PATH=${PATH}:/new/less/important/directory

Ou você pode preceder para defini-lo como o diretório de maior prioridade:

export $PATH=/new/more/important/path:${PATH}

Para evitar problemas, você provavelmente deve anexar apenas (primeiro exemplo).

    
por earthmeLon 26.02.2016 / 17:44