Обновите `.bashrc `и перезагрузите

Вы можете использовать следующую команду:

find /your/path -exec bash -c "if file {} | grep "python"; then cat {} ; fi" \;

Эта команда выполнит fileдля всех найденных файлов, и в случае, если вывод этой команды содержит «python», выполняется cat.

Очевидно, что вы должны адаптировать эту команду к вашим потребностям.

0
27.10.2021, 20:34
1 ответ

Как указал @glenn -jackman, ваш поиск происходит в подоболочке, где выполняется ваш скрипт, и в конце вашего скрипта вы возвращаетесь в родительскую оболочку, где не происходит никакого поиска, а также.bashrc не выполняется. заново -такое разделение родительской оболочки и подоболочки проистекает из общих соображений безопасности.

То, что вы ищете, это exec bash, но не внутри вашего скрипта, а сгруппировано с ним, т.е.

bash your-script.sh && exec bash

Это ведет себя так, как если бы вы использовали источник, а затем оставались в той оболочке, из которой вы исходили. Действительно, он заменяет текущую оболочку новой оболочкой, и эта новая оболочка запускается, как и любая (интерактивная )оболочка, с запуска вашего.bashrc, теперь уже с вашими изменениями, и так же запускается каждая новая оболочка. оболочка/терминал, который вы запускаете.

Обратите внимание, что если бы вы использовали команду «exec bash» в своем скрипте, она заменила бы подоболочку, в которой выполняется ваш скрипт, но все равно оставалась бы подоболочкой.

Если вашей целью является динамическая и временная манипуляция с.bashrc, вам следует рассмотреть предложения @glenn -jackman о внесении изменений в отдельные файлы, которые можно легко удалить в любой момент по вашему выбору. Для этого вы также можете просто иметь постоянную линию

[ -f ~/.bashrc-temporary-addons ] && source ~/.bashrc-temporary-addons

в конце вашего.bashrc, а затем выполните (! только один ">" в первой строке для получения нового файла)

echo "" > ~/.bashrc-temporary-addons
echo "export MyDir='MyAnalysis'" >> ~/.bashrc-temporary-addons
echo "alias llA='ll MyAnalysis'" >> ~/.bashrc-temporary-addons

и, по вашему выбору, просто

rm ~/.bashrc-temporary-addons

(Из-за теста «-f» ошибки не будет, если «~/.bashrc -временные -надстройки» не существует ).

Если ваши манипуляции с.bashrc должны существовать в течение всего сеанса, то есть до выхода из системы (, но не появляться снова при следующем входе в систему ), вы можете создать файл .bash_logoutдля стирания временных файлов в "bash. d/" или все содержимое "bash.d/", или "~/.bashrc -временные -дополнения".

0
29.10.2021, 22:29

Теги

Похожие вопросы