|
|
@ -31,20 +31,40 @@ function bashrc_watch_end { |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
function bashrc_env_sync { |
|
|
|
env_var="$1" |
|
|
|
env_value="$2" |
|
|
|
if printenv | grep -q "$env_var"; then |
|
|
|
real_value=$(eval "echo \$$env_var") |
|
|
|
echo "success for $env_var = $real_value" |
|
|
|
function _bashrc_env_with_prefix { |
|
|
|
arg1="$1" |
|
|
|
arg2="$2" |
|
|
|
prefix="$3" |
|
|
|
if printenv | grep -q "$arg1"; then |
|
|
|
real_value=$(eval "echo \$$arg1") |
|
|
|
echo "success for $arg1 = $real_value" |
|
|
|
else |
|
|
|
session_line="export ${env_var}=${env_value}" |
|
|
|
append_or_replace "^${session_line}.*" "$session_line" "$HOME/.bashrc" &>/dev/null |
|
|
|
case "$prefix" in |
|
|
|
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" |
|
|
|
set +e |
|
|
|
eval "BASHRC_LINES=$BASHRC_LINES $0" |
|
|
|
exit $? |
|
|
|
fi |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
function bashrc_env_export { |
|
|
|
_bashrc_env_with_prefix "$1" "$2" 'export' |
|
|
|
} |
|
|
|
|
|
|
|
function bashrc_env_eval { |
|
|
|
_bashrc_env_with_prefix "$1" "$2" 'eval' |
|
|
|
} |
|
|
|
|
|
|
|
# main |
|
|
@ -53,8 +73,9 @@ set -Eeu |
|
|
|
bashrc_watch_start |
|
|
|
|
|
|
|
echo 'init' |
|
|
|
bashrc_env_sync 'SESSION_RESTART' true |
|
|
|
bashrc_env_sync 'TOTO' fluo |
|
|
|
bashrc_env_export 'SESSION_RESTART' true |
|
|
|
bashrc_env_export 'TOTO' fluo |
|
|
|
bashrc_env_eval 'MISE_SHELL' "$HOME/.local/bin/mise activate bash" |
|
|
|
echo 'end' |
|
|
|
|
|
|
|
bashrc_watch_end |