deploy-site.sh
não está no PATH. Você tem que executá-lo como ./deploy-site.sh
se você estiver no mesmo diretório ou /path/deploy-site.sh
se não estiver
Estou tentando executar um script Bash simples chamado deploy-site.sh
(pelo link ). Eu fiz as edições necessárias para executá-lo localmente (mudança de WORKDIR, etc). Eu também segui as instruções aqui .
mkdir ~/bin
chmod 755 ~/bin
(Para armazenar o script na minha pasta pessoal. Então eu 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 script 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 de echo $PATH
/ home / getoprodigy / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / jogos: / usr / local / jogos
deploy-site.sh
não está no PATH. Você tem que executá-lo como ./deploy-site.sh
se você estiver no mesmo diretório ou /path/deploy-site.sh
se não estiver
Para executá-lo como 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 algumas coisas para "corrigir":
Execute 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
Adicioná-lo 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 rodar /usr/local/bin
em todo o sistema normalmente é 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 também adiciona permanentemente para adicionar isso 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 usuário atual (não quando executado com sudo
).
Para fazê-lo funcionar com sudo
(ou seja, o root
user) ou deve ser capaz de fazer de forma semelhante (CUIDADOSAMENTE) modificando /etc/environment
(ou possivelmente /root/.profile
etc), mas como este script parece só precisa ser executado uma vez, eu recomendaria um dos métodos acima.
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 em /usr/bin
e você pode usar o link como comando.
$ cd /usr/bin
$ sudo ln /path/to/your/script linkname
agora você pode digitar linkname
em qualquer diretório.
Você pode executá-lo por
sudo bash deploy-site.sh
Tags bash