mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-30 09:46:38 +00:00
57 lines
1.0 KiB
Bash
Executable File
57 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright (c) 2022 Huang-Huang Bao
|
|
#
|
|
# This software is released under the MIT License.
|
|
# https://opensource.org/licenses/MIT
|
|
|
|
# shellcheck disable=SC2076
|
|
set -e
|
|
|
|
disallowd_vars_arr=(
|
|
_
|
|
fish_kill_signal
|
|
fish_killring
|
|
fish_pid
|
|
history
|
|
hostname
|
|
PWD
|
|
pipestatus
|
|
SHLVL
|
|
status
|
|
status_generation
|
|
version
|
|
)
|
|
disallowd_vars=" ${disallowd_vars_arr[*]} "
|
|
|
|
fish_escape() {
|
|
value="${1//\\/\\\\}"
|
|
value="${value//\'/\\\'}"
|
|
echo "'${value}'"
|
|
}
|
|
|
|
flag_impure="$__FISH_BASH2ENV_IMPURE"
|
|
unset __FISH_BASH2ENV_IMPURE
|
|
|
|
if [[ -z "$flag_impure" ]]; then
|
|
old_env=" $(env -0 | tr '\0' ' ') "
|
|
fi
|
|
|
|
eval_status=
|
|
eval "$*" 1>&2 || eval_status=$?
|
|
|
|
env -0 | while IFS= read -rs -d $'\0' line; do
|
|
if [[ -z "$flag_impure" && "${old_env}" =~ " ${line} " ]]; then
|
|
continue
|
|
fi
|
|
|
|
name="${line%%=*}"
|
|
if [[ "${disallowd_vars}" =~ " ${name} " ]]; then
|
|
continue
|
|
fi
|
|
|
|
value="$(fish_escape "${line#*=}")"
|
|
echo "set -gx ${name} ${value}"
|
|
done
|
|
|
|
exit $eval_status
|