summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/cmd/shell.sh13
-rw-r--r--locale/en_US.sh2
2 files changed, 10 insertions, 5 deletions
diff --git a/lib/cmd/shell.sh b/lib/cmd/shell.sh
index 00589d2..2745f4b 100644
--- a/lib/cmd/shell.sh
+++ b/lib/cmd/shell.sh
@@ -25,19 +25,24 @@ cmd_shell_main()
{
local root=
- if [ ${#} -ne 1 ]; then
+ if [ ${#} -lt 1 ]; then
print_cmd_usage 'shell' >&2
exit 1
fi
root="${1}"
+ shift 1
. "${root}/etc/os-release"
profile_set "${ID}"
chroot_mount "${root}"
- chroot "${root}" /bin/sh
- printf '\n'
- info "$(get_msg 'cmd_shell_exiting')"
+ if [ ${#} -eq 0 ]; then
+ chroot "${root}" /bin/sh
+ printf '\n'
+ info "$(get_msg 'cmd_shell_exiting')"
+ else
+ chroot "${root}" /bin/sh -c "${*}"
+ fi
chroot_umount "${root}"
}
diff --git a/locale/en_US.sh b/locale/en_US.sh
index b8024ad..06f3250 100644
--- a/locale/en_US.sh
+++ b/locale/en_US.sh
@@ -87,7 +87,7 @@ msg_prokit_cmd_install_checksum_fail='Checksum of package file failed'
# lib/cmd/shell.sh
msg_prokit_cmd_shell_summary='run a shell in an isolated environment'
-msg_prokit_cmd_shell_usage='<root-dir>'
+msg_prokit_cmd_shell_usage='<root-dir> [<command> [<argument> ...]]'
msg_prokit_cmd_shell_exiting='Exiting...'
# lib/cmd/opkg.sh