diff --git a/notebook/terminal/__init__.py b/notebook/terminal/__init__.py index ce07cf604..2d216cc1e 100644 --- a/notebook/terminal/__init__.py +++ b/notebook/terminal/__init__.py @@ -21,8 +21,13 @@ def initialize(nb_app): shell = nb_app.terminado_settings.get('shell_command', [os.environ.get('SHELL') or default_shell] ) - # Enable login mode - to automatically source the /etc/profile script - if os.name != 'nt': + # Enable login mode - to automatically source the /etc/profile + # script, but only for non-nested shells; for nested shells, it's + # superfluous and may even be harmful (e.g. on macOS, where login + # shells invoke /usr/libexec/path_helper to add entries from + # /etc/paths{,.d} to the PATH, reordering it in the process and + # potentially overriding virtualenvs and other PATH modifications) + if os.name != 'nt' and int(os.environ.get("SHLVL", 0)) < 1: shell.append('-l') terminal_manager = nb_app.web_app.settings['terminal_manager'] = TerminalManager( shell_command=shell,