# "shell" command # # Copyright (C) 2014 Patrick "P. J." McDermott # # This file is part of the ProteanOS Development Kit. # # The ProteanOS Development Kit is free software: you can redistribute # it and/or modify it under the terms of the GNU General Public License # as published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # The ProteanOS Development Kit is distributed in the hope that it # will be useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with the ProteanOS Development Kit. If not, see # . use profile use chroot cmd_shell_main() { local root= local uname_s= if [ ${#} -lt 1 ]; then print_cmd_usage 'shell' >&2 exit 1 fi root="${1}" shift 1 . "${root}/etc/os-release" profile_set "${ID}" uname_s="$( (uname -s) 2>/dev/null)" || uname_s='unknown' mkdir -p "${root}/prokit/wd/${$}" case "${uname_s}" in 'Linux') mount -o bind . "${root}/prokit/wd/${$}" ;; esac chroot_mount "${root}" if [ ${#} -eq 0 ]; then chroot "${root}" /bin/sh -c "cd '/prokit/wd/${$}'; /bin/sh" printf '\n' info "$(get_msg 'cmd_shell_exiting')" else chroot "${root}" /bin/sh -c "cd '/prokit/wd/${$}'; ${*}" fi chroot_umount "${root}" case "${uname_s}" in 'Linux') umount "${root}/prokit/wd/${$}" ;; esac rmdir "${root}/prokit/wd/${$}" }