電子書籍の厳選無料作品が豊富!

マックの環境をあるサイトを見ながら開発していたのですが、Apacheというwebサーバーをインストールしパスを通したところApacheの起動もできず、sudoやbrewなどのコマンドが使えなくなってしまいました。
その後、色々サイトを探してどうやらPATHを重複して通していることがわかりました。理解も浅はかな初心者がいろいろターミナルをいじっていたので、のっぴきならないくらいPATHが重複されてしまい、さらにunsetで重複したものを削除しようと試みたところ悪化をたどる一方で現在は何もコマンドができない状況です。
どうしたらもとに戻るのかどなたか解決の糸口を教えてください。よろしくお願いします。

参照URL ゼロから始めるMacintosh開発環境構築
http://engineer-intern.jp/archives/11563

現在のターミナルの状況...
Last login: Mon Jun 23 19:09:16 on console
-bash: unset: `PATH=/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:PATH': not a valid identifier
-bash: unset: `PATH=/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:PATH': not a valid identifier
-bash: unset: `PATH=/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:PATH': not a valid identifier

A 回答 (2件)

途中で送信してしまったので追記です。



unset PATH=/usr/local/sbin:$PATH
と記述すると、$PATHがPATHの内容に展開されて
unset PATH=/usr/local/sbin:/usr/local/sbin:...:PATH
となり、エラーメッセージとも一致します。


シェルスクリプトの書き方は、参考書や参考サイトがありますので、基礎くらいは勉強しておくとよいでしょう。
    • good
    • 0

メッセージをよく読みましょう。



「PATH=/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:PATH」は有効な識別子(valid identifier)ではない

というメッセージを 「unset」が出しています。
unset 変数名
で、「変数名」の変数を未定義にします。
その変数名として「PATH=/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:PATH」が指定されている、というのがエラーの理由です。


シェルスクリプトでは
PATH
が変数名
$PATH
${PATH}
等が、「変数の内容を展開したもの」です。

unset $PATH
と書けば、 $PATHの内容が展開されて
unset /usr/bin:/usr/sbin:.......
(例)となり、 「 /usr/bin:/usr/sbin:....... を unsetする」という命令になります。

逆に
PATH=/usr/local/sbin:PATH
と書けば、このPATHは、「PATH」という文字列でしかありません。



「PATH=/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:/usr/local/sbin:PATH」
というのから予想すると
・最初に
PATH=/usr/local/sbin:PATH
としてしまい、それまでPATHに入っていたもの(/usr/bin等)を上書きしてしまった。
そのため、標準のコマンド(ls,cat等)が使えなくなった(PATHから探せなくなった)
・その後
PATH=/usr/local/sbin:$PATH
を繰り返したので、それまでのPATHに /usr/local/sbin を加えたものになった
( /usr/local/sbin:PATH に /usr/local/sbin を加えた /usr/local/sbin:/usr/local/sbin:PATH)

・先頭のディレクトリを削除するつもりで
unset PATH=/usr/local/sbin:$PATH
と書いた
(unset は変数そのものを削除します。変数内の特定の文字を削除するものではありません)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!