def interactive_shell(self, command=None, paster=False, detach=False):
if not exists(self.target + '<STR_LIT>'):<EOL><INDENT>self.create_bash_profile()<EOL><DEDENT>if not command:<EOL><INDENT>command = []<EOL><DEDENT>use_tty = sys.stdin.isatty() and sys.stdout.isatty()<EOL>background = environ.get('<STR_LIT>', False) or detach<EOL>if is_boot2docker():<EOL><INDENT>venv_volumes = ['<STR_LIT>', self._get_container_name('<STR_LIT>')]<EOL><DEDENT>else:<EOL><INDENT>venv_volumes = ['<STR_LIT>', self.datadir + '<STR_LIT>']<EOL><DEDENT>self._create_run_ini(self.port, production=False, output='<STR_LIT>')<EOL>self._create_run_ini(self.port, production=True, output='<STR_LIT>',<EOL>source='<STR_LIT>', override_site_url=False)<EOL>script = scripts.get_script_path('<STR_LIT>')<EOL>if paster:<EOL><INDENT>script = scripts.get_script_path('<STR_LIT>')<EOL>if command and command != ['<STR_LIT>'] and command != ['<STR_LIT>']:<EOL><INDENT>command += ['<STR_LIT>']<EOL><DEDENT>command = [self.extension_dir] + command<EOL><DEDENT>proxy_settings = self._proxy_settings()<EOL>if proxy_settings:<EOL><INDENT>venv_volumes += ['<STR_LIT>',<EOL>self.sitedir + '<STR_LIT>']<EOL><DEDENT>links = {self._get_container_name('<STR_LIT>'): '<STR_LIT>',<EOL>self._get_container_name('<STR_LIT>'): '<STR_LIT>'}<EOL>links.update({self._get_container_name(container): container for container<EOL>in self.extra_containers})<EOL>link_params = []<EOL>for link in links:<EOL><INDENT>link_params.append('<STR_LIT>')<EOL>link_params.append(link + '<STR_LIT::>' + links[link])<EOL><DEDENT>if '<STR_LIT>' in self.containers_running():<EOL><INDENT>link_params.append('<STR_LIT>')<EOL>link_params.append(self._get_container_name('<STR_LIT>') + '<STR_LIT>')<EOL><DEDENT>return subprocess.call([<EOL>DOCKER_EXE, '<STR_LIT>',<EOL>] + (['<STR_LIT>'] if not background else []) + [<EOL>'<STR_LIT>' if use_tty else '<STR_LIT>',<EOL>'<STR_LIT>' if detach else '<STR_LIT>',<EOL>] + venv_volumes + [<EOL>'<STR_LIT>', self.target + '<STR_LIT>',<EOL>'<STR_LIT>', self.sitedir + '<STR_LIT>',<EOL>'<STR_LIT>', script + '<STR_LIT>',<EOL>'<STR_LIT>', scripts.get_script_path('<STR_LIT>') + '<STR_LIT>',<EOL>'<STR_LIT>', self.sitedir + '<STR_LIT>',<EOL>'<STR_LIT>', self.sitedir +<EOL>'<STR_LIT>'] +<EOL>link_params +<EOL>['<STR_LIT>', self.name,<EOL>'<STR_LIT>', '<STR_LIT>'] + command)<EOL>
launch interactive shell session with all writable volumes

:param: list of strings to execute instead of bash