diff --git a/Lib/pdb.py b/Lib/pdb.py index 60bdb7675c8131..2f11af5b71762b 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -159,11 +159,11 @@ def __init__(self, completekey='tab', stdin=None, stdout=None, skip=None, self.allow_kbdint = False self.nosigint = nosigint - # Read $HOME/.pdbrc and ./.pdbrc + # Read ~/.pdbrc and ./.pdbrc self.rcLines = [] if readrc: - if 'HOME' in os.environ: - envHome = os.environ['HOME'] + envHome = os.path.expanduser('~') + if envHome != '~': try: with open(os.path.join(envHome, ".pdbrc")) as rcFile: self.rcLines.extend(rcFile) diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 9aa38e08dd6e6c..60a07ce16b5940 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1333,6 +1333,18 @@ def test_readrc_kwarg(self): if save_home is not None: os.environ['HOME'] = save_home + def test_readrc_homedir(self): + save_home = os.environ.pop("HOME", None) + with support.temp_dir() as temp_dir, patch("os.path.expanduser"): + os.path.expanduser.return_value = temp_dir + try: + with open(os.path.join(temp_dir, ".pdbrc"), "w") as f: + f.write("invalid") + self.assertEqual(pdb.Pdb().rcLines[0], "invalid") + finally: + if save_home is not None: + os.environ["HOME"] = save_home + def test_header(self): stdout = StringIO() header = 'Nobody expects... blah, blah, blah'