[root@*** /]# type apachectl
apachectl is hashed (/usr/sbin/apachectl)
[root@*** /]# find -name ”apachectl”
./usr/sbin/apachectl
./usr/local/apache2/bin/apachectl
apachectlを./usr/sbin/apachectlに割り当てているものはなんでしょうか?
./usr/local/apache2/bin/apachectlに割り当てたいのですが、
.bashrcに
alias apachectl=’./usr/local/apache2/bin/apachectl’
ってやったらどうなりますか?
PATHの評価順はどうなっていますか?
/usr/local/apache2/bin にPATHが通っていなければ記載のようになると思います。
/usr/sbin/ と /usr/local/apache/bin にhoge.shを作り擬似的に評価してみたら(/usr/sbinにだけPATH通っています)
%hoge.sh < /usr/sbin/hoge.sh が実行される
で、alias hoge.sh ’./usr/local/apache/bin/hoge.sh’ をやって
%hoge.shをやると
./usr/local/apache/bin/hoge.sh: Command not found.
になりました。頭のdotを取って
alias hoge.sh ’/usr/local/apache/bin/hoge.sh’ をやると
%hoge.sh
hoge /usr/local/apache/bin
になりました。
結論としては、aliasはPATH環境変数をオー払い度するという理解でよろしいのではないかと。しかしaliasより先にPATHを通すか絶対パスでコマンドを実行する方がよろしいのではないかと思います。
echo $PATH
と打ってみて下さい。
シェルは上記のパスの順番で一致するファイル名を検索しにいきます。
おそらく、./usr/sbin/が/usr/local/apache2/binよりも前にあるはずです
> alias apachectl=’./usr/local/apache2/bin/apachectl’
上記の手で問題ないと思います
apachectl=’/usr/local/apache2/bin/apachectl’
こっち(/userの前に「.」がない)方が期待している動作だと思います。
”./”は私のうっかりミスです。ごめんなさい気がつきませんでした。だから前述の方も”./”で試されたのですね。申し訳ない。
PATHは通っていませんでした。
/usr/sbin/をおなざりにするわけにもいかないので、aliasで試してみようと思います。PATHはPATHで通し方ぐらい知らないのはどうかと思うので、また機会をみて基礎コマンド入門レベルの質問をすると思います。その際はよろしくお願いします。
うっかりapachectlでコマンドを打つと意図したものとは違うapacheが立ち上がってしまうため、aliasを切ろうと思いました。
「aliasよりPATHを通せば」ということは、環境変数を設定するファイルがあるんでしょうね。なるほど。まずはそこからですか…。