Bash - ativa a execução somente se o script for executado a partir de um diretório específico

0

Eu preciso escrever um script de shell que só pode ser executado se for executado a partir do diretório inicial do usuário atualmente conectado, e não tenho idéia de como verificar isso no próprio script. Qualquer ajuda será apreciada.

    
por Eutherpy 28.06.2015 / 14:15

2 respostas

3

Você pode usar as variáveis de ambiente PWD e HOME: $PWD é o diretório de trabalho atual, enquanto $HOME é o diretório inicial do usuário atual. Você pode preceder as instruções executáveis no seu script:

if [ "$PWD" != "$HOME" ]; then exit; fi

Opcionalmente, você pode adicionar um código de erro ao comando exit , caso o shell de chamada queira verificar o sucesso ou a falha do script.

Outra variável útil é OLDPWD: $OLDPWD é o diretório anterior antes da última alteração do diretório. Você pode usar isso para fazer o script ser executado de qualquer lugar, cercando o script com:

cd "$HOME"
. . . . . .
cd "$OLDPWD"

Isso pressupõe que não há outras alterações de diretório no script; Caso contrário, use INITPWD="$PWD" primeiro e retorne para $INITPWD . Na verdade, na maioria das circunstâncias o script será executado em um subshell, então a mudança de volta para o diretório original será desnecessária, já que o cd inicial não afetará o shell pai.

    
por 28.06.2015 / 20:55
0

pode ser usado no começo do script: LOCATION = / path / to / script if ["PWD"!="$ LOCATION"]; então cd $ LOCATION

    
por 20.04.2018 / 20:30