

`$`の時は`git`コマンドが使えるのですが、  
`sudo -s`してrootユーザーになった時に`git`コマンドが使えません。  
rootユーザーの時のパスが通っていないのが原因だと思うのですが、設定の仕方がいまいちわかりません。  
通常のユーザーと同じようにrootユーザーのパスを設定するにはどうしたらよいのでしょうか。

[code]

    $ which git
    /usr/local/bin/git
    
    # which git
    /usr/bin/which: no git in (/sbin:/bin:/usr/sbin:/usr/bin)
    
[/code]


CC BY-SA 3.0
2016-01-02T08:10:36.740
20531
2016-02-01T15:29:58.307
9149
question
git centos
rootの時にgitのパスが通ってない


CentOS（私は7で確認）のデフォルト設定では、sudoの設定ファイルであるsudoersのsecure_path設定により、sudo時のパスが`/sbin:/bin:/usr/sbin/:/usr/bin`になります。

質問のような運用形態で/usr/local/bin/gitを使えるようにするには、以下のいずれかの方法をとることになると思います。なお、`sudo
-s`でなければ、sudoに-Eオプションを付けて現在の環境変数PATHを引き継ぐこともできます。

  * `sudo -s`のかわりに`sudo su -`を使う（自分のパスワードでrootになる）
  * `sudo -s`のかわりに`su`または`su -`を使う（rootのパスワードでrootになる）
  * `sudo visudo`でsudoersの編集に入り、`Defaults secure_path`の行の設定をする


CC BY-SA 3.0
2016-01-02T13:12:06.987
20540
2016-01-02T13:12:06.987
4010
20531
answer


bashの場合パスを通すには環境変数`PATH`を設定します。  
bash のマニュアルには次のように書いてあります。

> PATH  
>  コマンドの検索パスです。 シェルがコマンドを検索するディレクトリをコロンで区切って並べたリストです (後述の コマンドの実行を参照)。 PATH
> 中の長さ 0 の (空の) ディレクトリ名は、カレントディレクトリを示します。 空のディレクトリ名は、2 つのコロンを並べるか、
> 先頭や末尾のコロンで表します。 デフォルトのパスはシステム依存で、 bash をインストールしたシステム管理者が設定します。 一般的な値は
> ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin'' です。

環境変数の設定は`export`コマンドを使います。`:`区切りで`/usr/local/bin`を追加します。

[code]

    # export PATH=$PATH:/usr/local/bin
    # which git
    /usr/local/bin/git
    
[/code]

`export` コマンドで設定した値はログオフすると破棄されるため `~/.bashrc` に書きます。

[code]

    # vim ~/.bash_profile
    (略)
    export PATH=$PATH:/usr/local/bin
    
[/code]

`sudo -s` しなおすか 手動で読み込むと反映されます。

[code]

    # . ~/.bashrc  ←手動で読み込む
    # which git
    /usr/local/bin/git
    
[/code]

[code]

    $ sudo -s
    # which git
    /usr/local/bin/git
    
[/code]


CC BY-SA 3.0
2016-01-02T15:18:28.717
20544
2016-01-02T15:18:28.717
5008
20531
answer