私はsudo
のmacportsバージョンをインストールしました。 1つのことを除いて、すべてがうまくいきます。 Python 2.6を使用して~
をユーザーのホームディレクトリに展開すると、Snow Leopardに付属するsudo
のバージョンとは異なる出力になります。例えばMacports sudoがpythonの/ var/rootに展開します
は次のPythonコードを検討:以下
#expand_home_dir.py
import os
os.path.expanduser('~')
を上記コードの3回の異なるコールです。
robert$ python2.6 expand_home_dir.py
/Users/robert
robert$ sudo python2.6 expand_home_dir.py
/var/root
robert$ /usr/bin/sudo python2.6 expand_home_dir.py
/Users/robert
任意のアイデアは、なぜこれが起こっている:私の$PATH
は/opt/local/bin
で始まるので、sudoを使用して最初の呼び出しは、MacPortsのバージョンを使用していますか?
私はこれがMacPorts版のsudoのためだとは思わない。私はsudoに戸惑っていません。もし 'sudo -i'、' cd〜 '、' pwd'を実行すると '/ var/root'という出力も出ます。おそらく 'os.path.expanduser'が特権エスカレーションに関係なく現在のユーザのパスを取得するためにPythonで使用するのが適切であるかどうか尋ねるべきでしょうか? (on stackoverflow) – Ricket
@Ricket:sudo -iを使用すると、実際には新しいユーザのホームディレクトリに変更して新しいシェルを開くことを直接指定しています。しかし、-iなしでsudoを使うのは、奇妙な動作が現れる場所です。 –