使用
python test.py
运行此文件时:
import os
import getpass
print(f"Env thinks the user is {os.getlogin()}")
print(f"Effective user is {getpass.getuser()}")
在我的 VS Code 终端中我得到:
Env thinks the user is root
Effective user is johndoe
但是在普通的 macOS 终端中运行它会给出
Env thinks the user is johndoe
Effective user is johndoe
有人知道为什么会有差异吗?不幸的是,当不使用我的用户时,这会导致权限错误。是否是 VS Code 中的设置配置错误等?
从 macOS Dock 或 Launchpad 启动 VS Code 时, 它不与登录 shell 关联,因此
os.getlogin()
返回 root
。
但是,当您在 VS Code 外部打开终端时,它会与登录 shell 关联,因此
os.getlogin()
返回您的用户名。
如果您尝试使用
code
命令从终端启动 VS Code,它应该将 VS Code 与登录 shell 相关联,从而导致 os.getlogin()
返回您的用户名。