это логика
$str = "title:'this is the new title', msg:'this_is_updated', body:'this is the new body text' ";
$str1 = explode(',', $str);
$array['customMessage'] = array();
foreach ($str1 as $key => $value) {
$str2 = explode(':', $value);
$array['customMessage'][$str2[0]] = $str2[1];
}
print_r($array['customMessage']);die;
Код выхода 127 из команд оболочки означает «команда не найдена». Является ли .bashrc
исполняемым? Обычно это не так, , вероятно, вы хотите его получить?
source ./home/$USERNAME/.bashrc
strike>
Как указал Дэн Фаррел В своем комментарии поиск файла в команде RUN
будет действовать только внутри этой оболочки.
Если вы хотите, чтобы он имел эффект для более поздних команд в сборке, вам нужно запустить их все в одном выражении RUN
. В приведенном ниже .bashrc
источник в той же оболочке, что и catkin_make
запускается.
RUN . /home/ros/.bashrc && \
cd /home/$USERNAME/catkin_ws && \
catkin_make
Что должно произойти, когда контейнер запускается с помощью docker run
, указывается с помощью оператора ENTRYPOINT
. Если вы просто хотите простую подсказку bash, укажите /bin/bash
. Оболочка будет запускаться с пользователем, указанным в операторе USER
.
Итак, если вы добавите следующее в конец вашего Dockerfile
USER ros
ENTRYPOINT /bin/bash
Когда кто-то запускает контейнер, используя docker run -it <containerName>
, он попадает в оболочку bash как пользователь ros
. Bash автоматически создаст файл /home/ros/.bashrc
, и все определения внутри будут доступны в оболочке. (Ваш оператор RUN
, содержащий файл .bashrc
, может быть удален