add interactive shell and non-interactive shell