如何将 EC2 Linux 实例上的 Session Manager shell 更改为 Bash?

上次更新日期:2021 年 3 月 24 日

我想更改 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例上的 Session Manager 默认 Shell。该如何操作?

简短描述

默认情况下,Amazon EC2 Linux 实例上的 Session Manager 会话使用 Bourne Shell (sh)。但是,Bash 是主要 Linux 发行版中的默认 Shell。如果更习惯于使用 Bash 而不是 sh,则可以使用可配置的 Shell 配置文件将默认的 Session Manager Shell 更改为 Bash。Shell 配置文件允许您在使用 Session Manager 时自定义会话中的首选项,包括:
  • Shell 首选项
  • 环境变量
  • 工作目录
  • 会话启动时运行多个命令

您可以使用 Systems Manager 控制台或 AWS 命令行界面 (AWS CLI) 启用可配置的 Shell 配置文件。

解决方法

先决条件

要启用 Shell 配置文件,必须使用 SSM Agent 版本 3.0.196.0 或更高版本。检查实例上的 SSM 代理版本号。如有必要,请更新 SSM 代理。有关更多信息,请参阅自动更新 SSM 代理

要查看实例上可用的 Shell,请运行以下命令:

$ sudo cat /etc/shells

注意:您可以使用通过此命令返回的任何 Shell。

启用可配置的 Shell 配置文件(控制台)

要使用 Systems Manager 控制台启用可配置的 Shell 配置文件并将 Shell 更改为 Bash,请执行以下步骤:

1.    打开 Systems Manager 控制台,然后从导航窗格中选择 Session Manager

2.    选择 Preferences (首选项) 选项卡,然后选择 Edit (编辑)

3.    对于“shellProfile” 下的“linux”,请输入以下内容:

/bin/bash

4.    选择 Save (保存)

启用可配置的 Shell 配置文件 (AWS CLI)

注意:如果在运行 AWS CLI 命令时遇到错误,请确保您使用的是最新版本的 AWS CLI

有关使用 AWS CLI 启用可配置的 Shell 配置文件和将 Shell 更改为 Bash 的说明,请参阅创建 Session Manager 首选项(命令行)

其他 Shell 配置文件配置选项

默认情况下,Session Manager 在“/usr/bin”目录中启动。您可以在 Shell 配置文件中添加命令以更改 Linux 实例上的 /usr 目录。例如:
cd /home/ec2-user

您还可以使用 Shell 配置文件加载特定的环境变量,或在会话开始时运行脚本。例如,要添加 PYTHONPATH 环境变量,请将以下命令添加到 Shell 配置文件中:

export PYTHONPATH=/usr/lib/python2.7

登录后,您可以运行以下命令来验证环境变量的设置是否正确:

$ sudo env