Ubuntu 26.04 のサーバーを複数台で運用する場合、PATH や proxy 変数の扱いをそろえておくと、APT、curl、Python、管理コマンドの挙動差を減らせます。
この記事では、/etc/environment に共通の PATH、HTTP_PROXY、HTTPS_PROXY、NO_PROXY を設定し、ログインシェル、sudo、systemd 管理サービスで確認するときの基本をまとめます。
/etc/environmentの役割- Ubuntu 26.04 の標準的な
PATH - 大文字/小文字の proxy 変数
NO_PROXYの指定- ログイン後、sudo、curl、APT での確認
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| 設定ファイル | /etc/environment |
| 主な項目 | PATH、HTTP_PROXY、HTTPS_PROXY、NO_PROXY |
| 確認コマンド | printenv、env、curl |
/etc/environment の役割を確認する
/etc/environment は、shell script ではなく、システム全体の環境変数を設定するためのファイルです。複雑な条件分岐や command substitution は置かず、単純な key/value として扱います。
- shell script として実行されるファイルではない
PATHなどの共通値を置く- proxy 変数は大文字と小文字の両方を用意すると互換性が高い
- 認証情報を含む proxy URL は扱いに注意する
- 変更後は新しい login session で確認する
PATH を設定する
Ubuntu 26.04 の基本的な管理コマンドが見つかるように、/usr/local/sbin、/usr/local/bin、/usr/sbin、/usr/bin、/sbin、/bin、/snap/bin を含めます。
sudo cp -a /etc/environment /etc/environment.bak
sudo tee /etc/environment >/dev/null <<'EOF'
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
EOF
sudo chmod 0644 /etc/environment
sudo chown root:root /etc/environment
cat /etc/environmentproxy 変数を設定する
proxy が必要な環境では、HTTP_PROXY / HTTPS_PROXY と http_proxy / https_proxy を両方設定すると、多くのツールで扱いやすくなります。
sudo cp -a /etc/environment /etc/environment.bak
sudo tee /etc/environment >/dev/null <<'EOF'
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
HTTP_PROXY="http://proxy.example.com:8080"
http_proxy="http://proxy.example.com:8080"
HTTPS_PROXY="http://proxy.example.com:8080"
https_proxy="http://proxy.example.com:8080"
NO_PROXY="localhost,127.0.0.1,::1,.example.com"
no_proxy="localhost,127.0.0.1,::1,.example.com"
EOF
sudo chmod 0644 /etc/environment
sudo chown root:root /etc/environment
cat /etc/environmentNO_PROXY を決める
NO_PROXY には、proxy を経由させない宛先を指定します。localhost、管理用ドメイン、内部 API、内部 Registry、LDAP などは、環境に合わせて明示します。
sudo cp -a /etc/environment /etc/environment.bak
sudo tee /etc/environment >/dev/null <<'EOF'
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
HTTP_PROXY="http://proxy.example.com:8080"
http_proxy="http://proxy.example.com:8080"
HTTPS_PROXY="http://proxy.example.com:8080"
https_proxy="http://proxy.example.com:8080"
NO_PROXY="localhost,127.0.0.1,::1,.example.com,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"
no_proxy="localhost,127.0.0.1,::1,.example.com,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"
EOF
sudo chmod 0644 /etc/environment
sudo chown root:root /etc/environment
cat /etc/environmentログイン後に確認する
/etc/environment は現在の shell に即時反映されるとは限りません。新しくログインし直すか、必要に応じて明示的に環境を読み直して確認します。
printenv PATH
printenv HTTP_PROXY
printenv http_proxy
printenv NO_PROXY
env | grep -E 'PATH|HTTP_PROXY|http_proxy|NO_PROXY|no_proxy'sudo と管理コマンドで確認する
通常ユーザーでは見えていても、sudo 実行時に環境変数が引き継がれない場合があります。必要な運用では、sudoers の env_keep や個別コマンド側の proxy 設定も確認します。
sudo env | grep -E 'PATH|HTTP_PROXY|http_proxy|NO_PROXY|no_proxy'
sudo -E env | grep -E 'PATH|HTTP_PROXY|http_proxy|NO_PROXY|no_proxy'
sudo apt update
curl -I https://example.com/systemd サービスとの違いを確認する
/etc/environment の値が、すべての systemd service に期待通り渡るとは限りません。サービス固有の proxy が必要な場合は、unit の drop-in やアプリケーション設定で分けて管理します。
systemctl show --property=Environment ssh.service
systemctl cat ssh.service
systemctl status ssh.service --no-pager確認ポイント
/etc/environmentが root 所有で0644になっているPATHに管理コマンドの標準パスが含まれている- 必要な場合だけ proxy 変数を設定している
NO_PROXYに内部宛先を入れている- 新しい login session で
printenvを確認している - sudo や systemd service への反映範囲を誤解していない
まとめ
Ubuntu 26.04 の共通環境設定では、/etc/environment に PATH と必要な proxy 変数を定義し、サーバー間の基本的な挙動差を減らします。
ただし、/etc/environment は万能の proxy 設定ファイルではありません。ログイン session、sudo、APT、curl、systemd service では扱いが異なるため、どこに反映される設定なのかを確認しながら使うことが大切です。

