
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
ご要望に応じて、エコーの結果は以下のとおりです$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
同様の方法で作成できるはずですが、このスクリプトは 1 回実行するだけで済むように見えるため、上記の方法のいずれかをお勧めします。/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
これでどのディレクトリからでも入力できるようになりました。