
deploy-site.sh
(by) 라는 간단한 Bash 스크립트를 실행하려고 합니다.http://klau.si/dev). 로컬에서 실행하는 데 필요한 편집을 수행했습니다(WORKDIR 변경 등). 나도 지시를 따랐다.여기.
mkdir ~/bin
chmod 755 ~/bin
(스크립트를 홈폴더에 저장하기 위함입니다. 그리고 재부팅하니 시스템이 인식하게 됩니다.)
sudo chmod +x <path>
sudo chmod 755 <filename>
그러나 Bash 스크립트를 실행하기 위해 터미널로 갈 때마다 다음을 얻습니다.
$ sudo deploy-site.sh <sitename>
sudo: deploy-site.sh: command not found
이 문제를 어떻게 해결할 수 있나요?
원본 스크립트는 다음과 같습니다.
#!/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
요청한대로 echo 결과는 다음과 같습니다.$PATH
/home/getoprodigy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
답변1
deploy-site.sh
PATH에 없습니다. ./deploy-site.sh
같은 디렉토리에 있는 것처럼 실행해야 하며 , /path/deploy-site.sh
그렇지 않은 경우에는 실행해야 합니다.
답변2
이를 실행 deploy-site.sh
하려면$PATH
- 다음을 사용하여 현재 경로를 볼 수 있습니다 echo $PATH
.
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$
↑ Ubuntu 14.04의 표준 경로 (아마도)
몇 가지 방법으로 문제를 '수정'할 수 있습니다.
현재 디렉터리에서 실행:
wget http://klau.si/sites/default/files/deploy-site.sh_.txt -O deploy-site.sh sudo ./deploy-site.sh
기존 디렉토리 PATH에 추가: 위와 같이 기존 경로를 보고
echo $PATH
디렉터리 중 하나에 추가하여 작동하게 할 수 있습니다. 일반적으로 시스템 전체에서 실행하려는 사용자 정의 명령이면/usr/local/bin
충분합니다.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
PATH에 디렉터리 추가: 일반적으로 영구적으로 추가하는 것도 에 이것을 추가하는 것 입니다
~/.profile
.~/.bash_profile
#.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
그러나 이것은 현재 사용자에게만 작동합니다( 로 실행할 때는 작동하지 않음
sudo
).sudo
(예: 사용자 ) 와 함께 작동하려면 (주의 깊게) 수정 (또는 가능하면 등)root
을 통해 비슷한 방식으로 만들 수 있어야 하지만 이 스크립트는 한 번만 실행하면 되는 것처럼 보이므로 다음 중 하나를 권장합니다. 위의 방법./etc/environment
/root/.profile
답변3
당신은 그것을 실행할 수 있습니다
sudo bash deploy-site.sh
답변4
파일 권한을 변경하는 중입니다. 스크립트를 실행하려면 tikend의 답변으로 전체 경로 이름을 지정할 수 있습니다.
임의의 디렉터리에서 명령으로 사용하려면 해당 링크를 만들고 /usr/bin
해당 링크를 명령으로 사용할 수 있습니다.
$ cd /usr/bin
$ sudo ln /path/to/your/script linkname
linkname
이제 어떤 디렉토리에서든 입력할 수 있습니다 .