
Estou tentando executar um script Bash simples chamado deploy-site.sh
(porhttp://klau.si/dev). Fiz as edições necessárias para executá-lo localmente (mudança de WORKDIR, etc). Eu também segui as instruçõesaqui.
mkdir ~/bin
chmod 755 ~/bin
(Para armazenar o script na minha pasta pessoal. Depois reiniciei, para que o sistema o reconheça.)
sudo chmod +x <path>
sudo chmod 755 <filename>
No entanto, sempre que vou ao terminal para executar o script Bash, recebo:
$ sudo deploy-site.sh <sitename>
sudo: deploy-site.sh: command not found
Como posso resolver este problema?
Aqui está o roteiro original:
#!/bin/bash
if [[ $# -lt 1 || $1 == "--help" || $1 == "-h" ]]
then
echo "Usage:"
echo " sudo `basename $0` SITENAME"
echo "Examples:"
echo " sudo `basename $0` drupal-8"
exit
fi
WORKDIR="/home/klausi/workspace"
APACHEDIR="/etc/apache2/sites-available"
HOSTSFILE="/etc/hosts"
echo "<VirtualHost *:80>
ServerAlias $1.localhost
DocumentRoot $WORKDIR/$1
<Directory \"$WORKDIR/$1\">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>" > $APACHEDIR/$1.conf
a2ensite $1
service apache2 restart
grep -q "127.0.0.1 $1.localhost" $HOSTSFILE
if [ $? -ne 0 ]; then
echo "127.0.0.1 $1.localhost" >> $HOSTSFILE
fi
Conforme solicitado, aqui estão os resultados do echo$PATH
/home/getoprodigy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Responder1
deploy-site.sh
não está no PATH. Você tem que executá-lo como ./deploy-site.sh
se estivesse no mesmo diretório ou /path/deploy-site.sh
se não
Responder2
Para executá-lo, deploy-site.sh
você precisa adicioná-lo ao seu$PATH
- você pode ver seu caminho atual com echo $PATH
:
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$
↑ caminho padrão no Ubuntu 14.04 (provavelmente)
Você pode fazer algumas coisas para 'consertar' isso:
Execute-o a partir do diretório atual:
wget http://klau.si/sites/default/files/deploy-site.sh_.txt -O deploy-site.sh sudo ./deploy-site.sh
Adicione-o a um diretório existente PATH: Como acima, você pode visualizar o caminho existente com
echo $PATH
e adicioná-lo a um dos diretórios para fazê-lo funcionar - para comandos personalizados que você deseja executar em todo o sistema/usr/local/bin
geralmente é suficiente.wget http://klau.si/sites/default/files/deploy-site.sh_.txt -O deploy-site sudo cp deploy-site /usr/local/bin/ sudo chmod +x /usr/local/bin/ sudo deploy-site
Adicione o diretório ao PATH: A prática normal para adicioná-lo permanentemente seria adicioná-lo a
~/.profile
,~/.bash_profile
etc:#.bash_profile # Get the aliases and functions if [ -f ~/.bashrc ] ; then . ~/.bashrc fi #User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin export PATH
MAS isso só funciona para o seu usuário atual (não quando executado com
sudo
). Para fazê-lo funcionar comsudo
(ou seja, oroot
usuário), você deve ser capaz de fazer de maneira semelhante modificando (CUIDADOSAMENTE)/etc/environment
(ou possivelmente/root/.profile
etc.), mas como esse script parece que só precisa ser executado uma vez, eu recomendaria um dos os métodos acima.
Responder3
Você pode executá-lo
sudo bash deploy-site.sh
Responder4
Você está apenas alterando a permissão do arquivo. Para executar o script você pode especificar o caminho completo como resposta do tikend.
Se você quiser usá-lo como um comando de qualquer diretório, crie um link /usr/bin
e poderá usar o link como comando.
$ cd /usr/bin
$ sudo ln /path/to/your/script linkname
agora você pode digitar linkname
em qualquer diretório.