diff --git a/django/core/management/commands/shell.py b/django/core/management/commands/shell.py
index d6d6f6a087..b4e9caf0d1 100644
--- a/django/core/management/commands/shell.py
+++ b/django/core/management/commands/shell.py
@@ -2,6 +2,7 @@ import os
 import warnings
 
 from django.core.management.base import BaseCommand
+from django.utils.datastructures import OrderedSet
 from django.utils.deprecation import RemovedInDjango20Warning
 
 
@@ -88,10 +89,9 @@ class Command(BaseCommand):
         # We want to honor both $PYTHONSTARTUP and .pythonrc.py, so follow system
         # conventions and get $PYTHONSTARTUP first then .pythonrc.py.
         if not options['no_startup']:
-            for pythonrc in (os.environ.get("PYTHONSTARTUP"), '~/.pythonrc.py'):
+            for pythonrc in OrderedSet([os.environ.get("PYTHONSTARTUP"), os.path.expanduser('~/.pythonrc.py')]):
                 if not pythonrc:
                     continue
-                pythonrc = os.path.expanduser(pythonrc)
                 if not os.path.isfile(pythonrc):
                     continue
                 try: