質問するログイン新規登録

回答編集履歴

1

sudoでエラーになる理由追記

2021/10/12 08:37

投稿

Tomak
Tomak

スコア1652

answer CHANGED
@@ -12,7 +12,12 @@
12
12
  #### ユーザー環境設定
13
13
  Windowsをご使用でしたら、システム環境設定のウィンドウで上部がユーザー環境設定です。Linuxでは `~/.bash_profile` や `~/profile` にあたります。ユーザー固有の環境設定を書きます。
14
14
 
15
+ なお、ユーザー環境でシステムパスを拡張するには下記のように書きます。
15
16
 
17
+ ```sh
18
+ export PATH="$PATH:/path/to/dir1:/path/to/dir2"
19
+ ```
20
+
16
21
  #### システム環境設定
17
22
  そして、システム環境設定のウィンドウで下部がシステムパスです。Linuxではこれが `/etc/environment` にあたります。システム全体で使用する環境設定を書きます。
18
23
 
@@ -23,6 +28,11 @@
23
28
  echo $SOME_ENV
24
29
  ```
25
30
 
31
+ #### sudoでエラーになる理由
32
+ まず、システムパスがとおっていないことになるので、`ls` をコマンドとして認識できなくなります。この状態でも `/bin/ls` とすれば認識はします。
33
+
34
+ また、sudo は初期設定では独自パスに切り替わります。 `/etc/sudoers` に `Defaults secure_path="sudo専用システムパス"` が書かれています。
35
+
26
36
  ----
27
37
 
28
38
  余談ですが、以前にRubyのバージョン管理を使用した起動アプリケーションについてご質問されていたと思います。 Python や Ruby のバージョン管理は少々特殊です。なぜなら、普通のグローバル変数とシステム環境変数も区別がないため、意図せずにプログラム起動中に環境が切り替わってしまうことを防ぐ設計になっています。