bashrc_env_export + eval

This commit is contained in:
pvincent
2025-02-17 21:54:35 +04:00
parent 10773787ab
commit 1687ed8e1d
+31 -10
View File
@@ -31,20 +31,40 @@ function bashrc_watch_end {
fi fi
} }
function bashrc_env_sync { function _bashrc_env_with_prefix {
env_var="$1" arg1="$1"
env_value="$2" arg2="$2"
if printenv | grep -q "$env_var"; then prefix="$3"
real_value=$(eval "echo \$$env_var") if printenv | grep -q "$arg1"; then
echo "success for $env_var = $real_value" real_value=$(eval "echo \$$arg1")
echo "success for $arg1 = $real_value"
else else
session_line="export ${env_var}=${env_value}" case "$prefix" in
append_or_replace "^${session_line}.*" "$session_line" "$HOME/.bashrc" &>/dev/null export)
session_line="export ${arg1}=${arg2}"
regex="$session_line"
;;
eval)
session_line="eval \"\$($arg2)\""
regex="eval \"\\\$\\($arg2\\)\""
;;
*) echo "unknown prefix $prefix" && exit 10 ;;
esac
append_or_replace "$regex" "$session_line" "$HOME/.bashrc" &>/dev/null
eval "$session_line" eval "$session_line"
set +e set +e
eval "BASHRC_LINES=$BASHRC_LINES $0" eval "BASHRC_LINES=$BASHRC_LINES $0"
exit $? exit $?
fi fi
}
function bashrc_env_export {
_bashrc_env_with_prefix "$1" "$2" 'export'
}
function bashrc_env_eval {
_bashrc_env_with_prefix "$1" "$2" 'eval'
} }
# main # main
@@ -53,8 +73,9 @@ set -Eeu
bashrc_watch_start bashrc_watch_start
echo 'init' echo 'init'
bashrc_env_sync 'SESSION_RESTART' true bashrc_env_export 'SESSION_RESTART' true
bashrc_env_sync 'TOTO' fluo bashrc_env_export 'TOTO' fluo
bashrc_env_eval 'MISE_SHELL' "$HOME/.local/bin/mise activate bash"
echo 'end' echo 'end'
bashrc_watch_end bashrc_watch_end