Рейтинг:0

bash -c "source ~/.profile" не является источником ~/.profile

флаг es

Вот некоторый вывод из контейнера Docker (под управлением Ubuntu 18.04), который, похоже, работает.

# источник ~/.профиль
net.ipv4.ipfrag_high_thresh = 134217728
net.core.rmem_default = 10485760
источник /opt/ros/foxy/install/setup.bash
ROS_ROOT /opt/ros/foxy
ROS_DISTRO фокси
# bash -c "источник ~/.profile"
# /bin/bash -c "источник /root/.profile"
# 

Вывод первой команды — это то, что я ожидаю от следующих команд. Кажется, я упускаю здесь что-то очевидное. Для контекста мне нужно /bin/bash -c "источник /root/.profile" работать, потому что я не хочу входить в контейнер Docker, чтобы запускать свои команды, и я хочу запускать материал в .bashrc до их запуска. Где я ошибаюсь?

muru avatar
флаг us
В вашем `.profile` может быть проверка на интерактивное использование. Не видя, что он делает, ничего не скажешь.
флаг es
Хорошая мысль, обновил.
muru avatar
флаг us
Теперь тот же комментарий, но с `.bashrc` вместо `.profile`.
terdon avatar
флаг cn
Да, пожалуйста [отредактируйте] свой вопрос и добавьте i) ПОЛНОЕ содержимое вашего .bashrc и ii) ПОЛНОЕ содержимое вашего `~/.profile`. В этих файлах может быть что угодно, мы не можем догадаться, что вы пытаетесь сделать. В идеале покажите нам только минимальный пример с как можно меньшим количеством строк, которые действительно воспроизводят проблему.
флаг es
Да, это было правильно. Решил это. Спасибо.
Рейтинг:-2
флаг es

В .bashrc:

# Если вы не работаете в интерактивном режиме, ничего не делайте
[-z "$PS1" ] && возврат

Следующая команда работает нормально:

/bin/bash -ic "источник ~/.bashrc"
terdon avatar
флаг cn
Обратите внимание, что это не очень полезно. Вы загружаете файл только в оболочку `bash -c`, поэтому любые переменные, которые вы определяете в файле, не будут доступны родительской оболочке. Как только процесс `/bin/bash` завершится, переменные исчезнут, и вы вернетесь к тому, с чего начали. Просто запустите `. ~/.bashrc` напрямую.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.