commit 3bf762b877edbc72cfeb6e352874e0e2a71dacf7
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2026-06-28T01:26:21Z |
| subject | Checksum rbash_load |
commit 3bf762b877edbc72cfeb6e352874e0e2a71dacf7
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2026-06-28T01:26:21Z
Checksum rbash_load
---
bash/core/20_io.bash | 123 +++++++++-------
bash/core/30_loader.bash | 64 ++++----
bash/core/40_sources.bash | 166 +++++++++++----------
bash/core/99_main.bash | 3 +-
bash/dist/rbashrc | 363 +++++++++++++++++++++++++---------------------
bash/dist/sources.list | 1 -
bash/sources/09_ssh-agent | 35 -----
7 files changed, 396 insertions(+), 359 deletions(-)
diff --git a/bash/core/20_io.bash b/bash/core/20_io.bash
index 4d585dd..3d00abc 100755
--- a/bash/core/20_io.bash
+++ b/bash/core/20_io.bash
@@ -1,70 +1,89 @@
rbash_url() {
- local path="$1"
- printf '%s/%s/raw/%s/%s/%s\n' \
- "$RBASH_REMOTE" "$RBASH_REPO" "$RBASH_REF" "$RBASH_PATH" "$path"
+ local path="$1"
+ printf '%s/%s/raw/%s/%s/%s\n' \
+ "$RBASH_REMOTE" "$RBASH_REPO" "$RBASH_REF" "$RBASH_PATH" "$path"
}
rbash_download() {
- local url="$1"
+ local url="$1"
- if command -v curl >/dev/null 2>&1; then
- curl -fsSL "$url" || {
- local rc=$?
- echo "rbash: download failed: $url" >&2
- echo "rbash: curl exit code: $rc" >&2
- return "$rc"
- }
- elif command -v wget >/dev/null 2>&1; then
- wget -qO- "$url" || {
- local rc=$?
- echo "rbash: download failed: $url" >&2
- echo "rbash: wget exit code: $rc" >&2
- return "$rc"
- }
- else
- echo "rbash: curl or wget is required" >&2
- return 127
- fi
+ if command -v curl >/dev/null 2>&1; then
+ curl -fsSL "$url" || {
+ local rc=$?
+ echo "rbash: download failed: $url" >&2
+ echo "rbash: curl exit code: $rc" >&2
+ return "$rc"
+ }
+ elif command -v wget >/dev/null 2>&1; then
+ wget -qO- "$url" || {
+ local rc=$?
+ echo "rbash: download failed: $url" >&2
+ echo "rbash: wget exit code: $rc" >&2
+ return "$rc"
+ }
+ else
+ echo "rbash: curl or wget is required" >&2
+ return 127
+ fi
+}
+
+function rbash_download_sig {
+ local _URL _LOC _SIG tmp
+
+ _SIG="$1"
+ _URL="$2"
+ _LOC="$3"
+
+ tmp=$( mktemp )
+ rbash_download "$_URL" > "$tmp"
+ sha256sum "$tmp" | grep -q "$_SIG"
+ if [ $? -eq 0 ]; then
+ mv "$tmp" "$_LOC"
+ else
+ echo "Download $_LOC: Signature mismatch" >&2
+ return 1
+ fi
}
rbash_cache() {
- local url="$1"
- local key file
+ local sig="$1"
+ local url="$2"
+ local key file
- if [ -z "${RBASH_CACHE_DIR:-}" ]; then
- echo "rbash: RBASH_CACHE_DIR is not set" >&2
- return 1
- fi
+ if [ -z "${RBASH_CACHE_DIR:-}" ]; then
+ echo "rbash: RBASH_CACHE_DIR is not set" >&2
+ return 1
+ fi
- mkdir -p "$RBASH_CACHE_DIR" || {
- echo "rbash: failed to create cache dir: $RBASH_CACHE_DIR" >&2
- return 1
- }
+ mkdir -p "$RBASH_CACHE_DIR" || {
+ echo "rbash: failed to create cache dir: $RBASH_CACHE_DIR" >&2
+ return 1
+ }
- if command -v md5sum >/dev/null 2>&1; then
- key="$(printf '%s' "$url" | md5sum | cut -d' ' -f1)"
- else
- key="$(printf '%s' "$url" | md5 | cut -d' ' -f1)"
- fi
+ if command -v md5sum >/dev/null 2>&1; then
+ key="$(printf '%s' "$url" | md5sum | cut -d' ' -f1)"
+ else
+ key="$(printf '%s' "$url" | md5 | cut -d' ' -f1)"
+ fi
- file="$RBASH_CACHE_DIR/$key"
+ file="$RBASH_CACHE_DIR/$key"
- if [ ! -f "$file" ]; then
- rbash_download "$url" > "$file" || {
- local rc=$?
- rm -f "$file"
- echo "rbash: download failed: $url" >&2
- return "$rc"
- }
- chmod 700 "$file"
- fi
+ if [ ! -f "$file" ]; then
+ rbash_download_sig "$sig" "$url" "$file" || {
+ local rc=$?
+ rm -f "$file"
+ echo "rbash: download failed: $url" >&2
+ return "$rc"
+ }
+ chmod 700 "$file"
+ fi
- printf '%s\n' "$file"
+ printf '%s\n' "$file"
}
_require_jq() {
- if ! command -v jq >/dev/null 2>&1; then
- echo "This command requires jq." >&2
- return 1
- fi
+ if ! command -v jq >/dev/null 2>&1; then
+ echo "This command requires jq." >&2
+ return 1
+ fi
}
diff --git a/bash/core/30_loader.bash b/bash/core/30_loader.bash
index 3859090..a5f15b4 100755
--- a/bash/core/30_loader.bash
+++ b/bash/core/30_loader.bash
@@ -38,37 +38,39 @@ __rbash_autoload() {
}
rbash_load() {
- local rel="$1"
- local url file
-
- # Normal startup should not individually fetch sources.
- # It should source RBASH_MERGED via __rbash_autoload.
- if [ -z "${_RBASH_MERGE_START:-}" ]; then
- __rbash_autoload
- return 0
- fi
-
- echo "Load: $rel"
-
- url="$(rbash_url "$rel")"
- file="$(rbash_cache "$url")" || {
- echo " ..download failed" >&2
- return 1
- }
-
- # shellcheck source=/dev/null
- if source "$file"; then
- {
- printf 'echo "Load: %s"\n' "$rel"
- cat "$file"
- printf '\n'
- } >> "$RBASH_MERGED"
- else
- echo " ..failed" >&2
- printf 'echo "Skipped: %s. Use rbash-reload to try again."\n' "$rel" >> "$RBASH_MERGED"
- fi
-
- chmod 700 "$RBASH_MERGED"
+ local rel="$1"
+ local url file
+
+ # Normal startup should not individually fetch sources.
+ # It should source RBASH_MERGED via __rbash_autoload.
+ if [ -z "${_RBASH_MERGE_START:-}" ]; then
+ __rbash_autoload
+ return 0
+ fi
+
+ echo "Load: $rel"
+
+ url="$(rbash_url "$rel")"
+ key="$(printf '%s' "$rel" | sed "s|^sources/||g" | grep -o '^[0-9]\+' || true)"
+ sig="${_RBASH_SOURCES_SUM["s$key"]}"
+ file="$(rbash_cache "$sig" "$url")" || {
+ echo " ..download failed" >&2
+ return 1
+ }
+
+ # shellcheck source=/dev/null
+ if source "$file"; then
+ {
+ printf 'echo "Load: %s"\n' "$rel"
+ cat "$file"
+ printf '\n'
+ } >> "$RBASH_MERGED"
+ else
+ echo " ..failed" >&2
+ printf 'echo "Skipped: %s. Use rbash-reload to try again."\n' "$rel" >> "$RBASH_MERGED"
+ fi
+
+ chmod 700 "$RBASH_MERGED"
}
rbash-run() {
diff --git a/bash/core/40_sources.bash b/bash/core/40_sources.bash
index 8ce1c21..03585b2 100755
--- a/bash/core/40_sources.bash
+++ b/bash/core/40_sources.bash
@@ -1,103 +1,117 @@
-rbash_sources_json_url() {
- printf '%s/%s/tree/%s/tree.json\n' \
- "$RBASH_REMOTE" "$RBASH_REPO" "$RBASH_REF"
+rbash_sources_list() {
+ printf '%s/%s/raw/master/bash/dist/sources.list\n' \
+ "$RBASH_REMOTE" "$RBASH_REPO"
}
declare -gA _RBASH_DICT
+declare -gA _RBASH_SOURCES_SUM
+
+rbash_sources_load() {
+ local hash path item key sources_list
+
+ _RBASH_DICT=()
+ _RBASH_SOURCES_SUM=()
+
+ sources_list=$(rbash_cache "$RBASH_SOURCES_SUM" "$(rbash_sources_list)" "sources.list")
+
+ while read -r hash path; do
+ [ -n "$hash" ] || continue
+ [ -n "$path" ] || continue
+
+ item="${path#sources/}"
+
+ key="$(printf '%s' "$item" | grep -o '^[0-9]\+' || true)"
+ [ -n "$key" ] || continue
+
+ _RBASH_DICT["s$key"]="$item"
+ _RBASH_SOURCES_SUM["s$key"]="$hash"
+ done < "$sources_list"
+}
rbash-list() {
- _require_jq || return 1
-
- local item key enabled_marker
- echo "Available sources:"
-
- while IFS= read -r item; do
- key="$(printf '%s' "$item" | grep -o '^[0-9]\+' || true)"
- [ -n "$key" ] && _RBASH_DICT["s$key"]="$item"
-
- enabled_marker=" "
- if grep -q -F "rbash_load \"sources/$item\"" "$RBASH_CONFIG"; then
- enabled_marker="*"
- fi
-
- printf ' %s %s\n' "$enabled_marker" "$item"
- done < <(
- rbash_download "$(rbash_sources_json_url)" |
- jq -r '
- .[]
- | select(.path == "bash/sources" or (.path | startswith("bash/sources/")))
- | .path
- | sub("^bash/sources/?"; "")
- | select(length > 0)
- '
- )
+ local key item enabled_marker
+
+ rbash_sources_load || return 1
+
+ echo "Available sources:"
+
+ while IFS= read -r key; do
+ item="${_RBASH_DICT[$key]}"
+
+ enabled_marker=" "
+ if grep -q -F "rbash_load \"sources/$item\"" "$RBASH_CONFIG"; then
+ enabled_marker="*"
+ fi
+
+ printf ' %s %s\n' "$enabled_marker" "$item"
+ done < <(printf '%s\n' "${!_RBASH_DICT[@]}" | sort -V)
}
r2ensource() {
- rbash-list || return 1
+ rbash-list || return 1
- local ids id selected tmp
- local -a enable=()
+ local ids id selected tmp
+ local -a enable=()
- read -r -p "Enter the script id XX, delimited by space: " ids
+ read -r -p "Enter the script id XX, delimited by space: " ids
- for id in $ids; do
- selected="${_RBASH_DICT["s$id"]}"
+ for id in $ids; do
+ selected="${_RBASH_DICT["s$id"]}"
- if [ -z "$selected" ]; then
- echo "No such id: $id" >&2
- return 1
- fi
+ if [ -z "$selected" ]; then
+ echo "No such id: $id" >&2
+ return 1
+ fi
- if grep -q -F "rbash_load \"sources/$selected\"" "$RBASH_CONFIG"; then
- echo "$selected is already enabled."
- continue
- fi
+ if grep -q -F "rbash_load \"sources/$selected\"" "$RBASH_CONFIG"; then
+ echo "$selected is already enabled."
+ continue
+ fi
- enable+=("$selected")
- done
+ enable+=("$selected")
+ done
- tmp="$(mktemp)"
- cp "$RBASH_CONFIG" "$tmp"
+ tmp="$(mktemp)"
+ cp "$RBASH_CONFIG" "$tmp"
- for selected in "${enable[@]}"; do
- echo "rbash_load \"sources/$selected\"" >> "$tmp"
- echo "Enabling $selected"
- done
+ for selected in "${enable[@]}"; do
+ echo "rbash_load \"sources/$selected\"" >> "$tmp"
+ echo "Enabling $selected"
+ done
- sort -u "$tmp" > "$RBASH_CONFIG"
- rm -f "$tmp"
- rm -rf "$RBASH_CACHE_DIR"
+ sort -u "$tmp" > "$RBASH_CONFIG"
+ rm -f "$tmp"
+ rm -rf "$RBASH_CACHE_DIR"
}
r2dissource() {
- local ids id tmp pattern
+ local ids id tmp pattern
- echo "Currently enabled sources:"
- grep -E '^rbash_load "sources/' "$RBASH_CONFIG" |
- sed 's/^rbash_load "sources\///; s/"$//' |
- sed 's/^/ /'
+ echo "Currently enabled sources:"
+ grep -E '^rbash_load "sources/' "$RBASH_CONFIG" |
+ sed 's/^rbash_load "sources\///; s/"$//' |
+ sed 's/^/ /'
- read -r -p "Enter the script id XX, delimited by space: " ids
+ read -r -p "Enter the script id XX, delimited by space: " ids
- tmp="$(mktemp)"
- cp "$RBASH_CONFIG" "$tmp"
+ tmp="$(mktemp)"
+ cp "$RBASH_CONFIG" "$tmp"
- for id in $ids; do
- pattern="rbash_load \"sources/${id}_"
+ for id in $ids; do
+ pattern="rbash_load \"sources/${id}_"
- if ! grep -q -F "$pattern" "$tmp"; then
- echo "No such id: $id" >&2
- rm -f "$tmp"
- return 1
- fi
+ if ! grep -q -F "$pattern" "$tmp"; then
+ echo "No such id: $id" >&2
+ rm -f "$tmp"
+ return 1
+ fi
- echo "Disabling $id"
- grep -v -F "$pattern" "$tmp" > "$tmp.next"
- mv "$tmp.next" "$tmp"
- done
+ echo "Disabling $id"
+ grep -v -F "$pattern" "$tmp" > "$tmp.next"
+ mv "$tmp.next" "$tmp"
+ done
- sort -u "$tmp" > "$RBASH_CONFIG"
- rm -f "$tmp"
- rm -rf "$RBASH_CACHE_DIR"
-}
\ No newline at end of file
+ sort -u "$tmp" > "$RBASH_CONFIG"
+ rm -f "$tmp"
+ rm -rf "$RBASH_CACHE_DIR"
+}
diff --git a/bash/core/99_main.bash b/bash/core/99_main.bash
index 112b8fc..a72a4e9 100644
--- a/bash/core/99_main.bash
+++ b/bash/core/99_main.bash
@@ -8,9 +8,10 @@ __rbash_main() {
source "$RBASH_ENV"
fi
+ rbash_sources_load
__rbash_autoload
__rbash_setup_prompt
}
__rbash_main
-unset -f __rbash_main
\ No newline at end of file
+unset -f __rbash_main
diff --git a/bash/dist/rbashrc b/bash/dist/rbashrc
index 3a6d25a..8d6061e 100755
--- a/bash/dist/rbashrc
+++ b/bash/dist/rbashrc
@@ -18,7 +18,7 @@ RBASH_CONFIG="$RBASH_HOME/config"
RBASH_ENV="$RBASH_HOME/env"
RBASH_MERGED="$RBASH_CACHE_DIR/merged"
RBASH_BIN="$RBASH_HOME/bin"
-RBASH_SOURCES_SUM="341fa76e725056b648a8ef9f42b5c969bd6a69f6908b5a2409b5fae14035bd58"
+RBASH_SOURCES_SUM="073b8c3e23fe1a4bc0d479cab97877357e56df00efd9371008613e6aff8f40df"
# ---- rbash: bash/core/00_env.bash ----
@@ -104,74 +104,93 @@ __func_help() {
# ---- rbash: bash/core/20_io.bash ----
rbash_url() {
- local path="$1"
- printf '%s/%s/raw/%s/%s/%s\n' \
- "$RBASH_REMOTE" "$RBASH_REPO" "$RBASH_REF" "$RBASH_PATH" "$path"
+ local path="$1"
+ printf '%s/%s/raw/%s/%s/%s\n' \
+ "$RBASH_REMOTE" "$RBASH_REPO" "$RBASH_REF" "$RBASH_PATH" "$path"
}
rbash_download() {
- local url="$1"
-
- if command -v curl >/dev/null 2>&1; then
- curl -fsSL "$url" || {
- local rc=$?
- echo "rbash: download failed: $url" >&2
- echo "rbash: curl exit code: $rc" >&2
- return "$rc"
- }
- elif command -v wget >/dev/null 2>&1; then
- wget -qO- "$url" || {
- local rc=$?
- echo "rbash: download failed: $url" >&2
- echo "rbash: wget exit code: $rc" >&2
- return "$rc"
- }
- else
- echo "rbash: curl or wget is required" >&2
- return 127
- fi
+ local url="$1"
+
+ if command -v curl >/dev/null 2>&1; then
+ curl -fsSL "$url" || {
+ local rc=$?
+ echo "rbash: download failed: $url" >&2
+ echo "rbash: curl exit code: $rc" >&2
+ return "$rc"
+ }
+ elif command -v wget >/dev/null 2>&1; then
+ wget -qO- "$url" || {
+ local rc=$?
+ echo "rbash: download failed: $url" >&2
+ echo "rbash: wget exit code: $rc" >&2
+ return "$rc"
+ }
+ else
+ echo "rbash: curl or wget is required" >&2
+ return 127
+ fi
}
-rbash_cache() {
- local url="$1"
- local key file
-
- if [ -z "${RBASH_CACHE_DIR:-}" ]; then
- echo "rbash: RBASH_CACHE_DIR is not set" >&2
- return 1
- fi
-
- mkdir -p "$RBASH_CACHE_DIR" || {
- echo "rbash: failed to create cache dir: $RBASH_CACHE_DIR" >&2
- return 1
- }
-
- if command -v md5sum >/dev/null 2>&1; then
- key="$(printf '%s' "$url" | md5sum | cut -d' ' -f1)"
- else
- key="$(printf '%s' "$url" | md5 | cut -d' ' -f1)"
- fi
-
- file="$RBASH_CACHE_DIR/$key"
-
- if [ ! -f "$file" ]; then
- rbash_download "$url" > "$file" || {
- local rc=$?
- rm -f "$file"
- echo "rbash: download failed: $url" >&2
- return "$rc"
- }
- chmod 700 "$file"
- fi
+function rbash_download_sig {
+ local _URL _LOC _SIG tmp
+
+ _SIG="$1"
+ _URL="$2"
+ _LOC="$3"
+
+ tmp=$( mktemp )
+ rbash_download "$_URL" > "$tmp"
+ sha256sum "$tmp" | grep -q "$_SIG"
+ if [ $? -eq 0 ]; then
+ mv "$tmp" "$_LOC"
+ else
+ echo "Download $_LOC: Signature mismatch" >&2
+ return 1
+ fi
+}
- printf '%s\n' "$file"
+rbash_cache() {
+ local sig="$1"
+ local url="$2"
+ local key file
+
+ if [ -z "${RBASH_CACHE_DIR:-}" ]; then
+ echo "rbash: RBASH_CACHE_DIR is not set" >&2
+ return 1
+ fi
+
+ mkdir -p "$RBASH_CACHE_DIR" || {
+ echo "rbash: failed to create cache dir: $RBASH_CACHE_DIR" >&2
+ return 1
+ }
+
+ if command -v md5sum >/dev/null 2>&1; then
+ key="$(printf '%s' "$url" | md5sum | cut -d' ' -f1)"
+ else
+ key="$(printf '%s' "$url" | md5 | cut -d' ' -f1)"
+ fi
+
+ file="$RBASH_CACHE_DIR/$key"
+
+ if [ ! -f "$file" ]; then
+ rbash_download_sig "$sig" "$url" "$file" || {
+ local rc=$?
+ rm -f "$file"
+ echo "rbash: download failed: $url" >&2
+ return "$rc"
+ }
+ chmod 700 "$file"
+ fi
+
+ printf '%s\n' "$file"
}
_require_jq() {
- if ! command -v jq >/dev/null 2>&1; then
- echo "This command requires jq." >&2
- return 1
- fi
+ if ! command -v jq >/dev/null 2>&1; then
+ echo "This command requires jq." >&2
+ return 1
+ fi
}
@@ -217,37 +236,39 @@ __rbash_autoload() {
}
rbash_load() {
- local rel="$1"
- local url file
-
- # Normal startup should not individually fetch sources.
- # It should source RBASH_MERGED via __rbash_autoload.
- if [ -z "${_RBASH_MERGE_START:-}" ]; then
- __rbash_autoload
- return 0
- fi
-
- echo "Load: $rel"
-
- url="$(rbash_url "$rel")"
- file="$(rbash_cache "$url")" || {
- echo " ..download failed" >&2
- return 1
- }
-
- # shellcheck source=/dev/null
- if source "$file"; then
- {
- printf 'echo "Load: %s"\n' "$rel"
- cat "$file"
- printf '\n'
- } >> "$RBASH_MERGED"
- else
- echo " ..failed" >&2
- printf 'echo "Skipped: %s. Use rbash-reload to try again."\n' "$rel" >> "$RBASH_MERGED"
- fi
-
- chmod 700 "$RBASH_MERGED"
+ local rel="$1"
+ local url file
+
+ # Normal startup should not individually fetch sources.
+ # It should source RBASH_MERGED via __rbash_autoload.
+ if [ -z "${_RBASH_MERGE_START:-}" ]; then
+ __rbash_autoload
+ return 0
+ fi
+
+ echo "Load: $rel"
+
+ url="$(rbash_url "$rel")"
+ key="$(printf '%s' "$rel" | sed "s|^sources/||g" | grep -o '^[0-9]\+' || true)"
+ sig="${_RBASH_SOURCES_SUM["s$key"]}"
+ file="$(rbash_cache "$sig" "$url")" || {
+ echo " ..download failed" >&2
+ return 1
+ }
+
+ # shellcheck source=/dev/null
+ if source "$file"; then
+ {
+ printf 'echo "Load: %s"\n' "$rel"
+ cat "$file"
+ printf '\n'
+ } >> "$RBASH_MERGED"
+ else
+ echo " ..failed" >&2
+ printf 'echo "Skipped: %s. Use rbash-reload to try again."\n' "$rel" >> "$RBASH_MERGED"
+ fi
+
+ chmod 700 "$RBASH_MERGED"
}
rbash-run() {
@@ -265,110 +286,125 @@ rbash-run() {
# ---- rbash: bash/core/40_sources.bash ----
-rbash_sources_json_url() {
- printf '%s/%s/tree/%s/tree.json\n' \
- "$RBASH_REMOTE" "$RBASH_REPO" "$RBASH_REF"
+rbash_sources_list() {
+ printf '%s/%s/raw/master/bash/dist/sources.list\n' \
+ "$RBASH_REMOTE" "$RBASH_REPO"
}
declare -gA _RBASH_DICT
+declare -gA _RBASH_SOURCES_SUM
+
+rbash_sources_load() {
+ local hash path item key sources_list
+
+ _RBASH_DICT=()
+ _RBASH_SOURCES_SUM=()
+
+ sources_list=$(rbash_cache "$RBASH_SOURCES_SUM" "$(rbash_sources_list)" "sources.list")
+
+ while read -r hash path; do
+ [ -n "$hash" ] || continue
+ [ -n "$path" ] || continue
+
+ item="${path#sources/}"
+
+ key="$(printf '%s' "$item" | grep -o '^[0-9]\+' || true)"
+ [ -n "$key" ] || continue
+
+ _RBASH_DICT["s$key"]="$item"
+ _RBASH_SOURCES_SUM["s$key"]="$hash"
+ done < "$sources_list"
+}
rbash-list() {
- _require_jq || return 1
+ local key item enabled_marker
- local item key enabled_marker
- echo "Available sources:"
+ rbash_sources_load || return 1
- while IFS= read -r item; do
- key="$(printf '%s' "$item" | grep -o '^[0-9]\+' || true)"
- [ -n "$key" ] && _RBASH_DICT["s$key"]="$item"
+ echo "Available sources:"
- enabled_marker=" "
- if grep -q -F "rbash_load \"sources/$item\"" "$RBASH_CONFIG"; then
- enabled_marker="*"
- fi
+ while IFS= read -r key; do
+ item="${_RBASH_DICT[$key]}"
+
+ enabled_marker=" "
+ if grep -q -F "rbash_load \"sources/$item\"" "$RBASH_CONFIG"; then
+ enabled_marker="*"
+ fi
- printf ' %s %s\n' "$enabled_marker" "$item"
- done < <(
- rbash_download "$(rbash_sources_json_url)" |
- jq -r '
- .[]
- | select(.path == "bash/sources" or (.path | startswith("bash/sources/")))
- | .path
- | sub("^bash/sources/?"; "")
- | select(length > 0)
- '
- )
+ printf ' %s %s\n' "$enabled_marker" "$item"
+ done < <(printf '%s\n' "${!_RBASH_DICT[@]}" | sort -V)
}
r2ensource() {
- rbash-list || return 1
+ rbash-list || return 1
- local ids id selected tmp
- local -a enable=()
+ local ids id selected tmp
+ local -a enable=()
- read -r -p "Enter the script id XX, delimited by space: " ids
+ read -r -p "Enter the script id XX, delimited by space: " ids
- for id in $ids; do
- selected="${_RBASH_DICT["s$id"]}"
+ for id in $ids; do
+ selected="${_RBASH_DICT["s$id"]}"
- if [ -z "$selected" ]; then
- echo "No such id: $id" >&2
- return 1
- fi
+ if [ -z "$selected" ]; then
+ echo "No such id: $id" >&2
+ return 1
+ fi
- if grep -q -F "rbash_load \"sources/$selected\"" "$RBASH_CONFIG"; then
- echo "$selected is already enabled."
- continue
- fi
+ if grep -q -F "rbash_load \"sources/$selected\"" "$RBASH_CONFIG"; then
+ echo "$selected is already enabled."
+ continue
+ fi
- enable+=("$selected")
- done
+ enable+=("$selected")
+ done
- tmp="$(mktemp)"
- cp "$RBASH_CONFIG" "$tmp"
+ tmp="$(mktemp)"
+ cp "$RBASH_CONFIG" "$tmp"
- for selected in "${enable[@]}"; do
- echo "rbash_load \"sources/$selected\"" >> "$tmp"
- echo "Enabling $selected"
- done
+ for selected in "${enable[@]}"; do
+ echo "rbash_load \"sources/$selected\"" >> "$tmp"
+ echo "Enabling $selected"
+ done
- sort -u "$tmp" > "$RBASH_CONFIG"
- rm -f "$tmp"
- rm -rf "$RBASH_CACHE_DIR"
+ sort -u "$tmp" > "$RBASH_CONFIG"
+ rm -f "$tmp"
+ rm -rf "$RBASH_CACHE_DIR"
}
r2dissource() {
- local ids id tmp pattern
+ local ids id tmp pattern
- echo "Currently enabled sources:"
- grep -E '^rbash_load "sources/' "$RBASH_CONFIG" |
- sed 's/^rbash_load "sources\///; s/"$//' |
- sed 's/^/ /'
+ echo "Currently enabled sources:"
+ grep -E '^rbash_load "sources/' "$RBASH_CONFIG" |
+ sed 's/^rbash_load "sources\///; s/"$//' |
+ sed 's/^/ /'
- read -r -p "Enter the script id XX, delimited by space: " ids
+ read -r -p "Enter the script id XX, delimited by space: " ids
- tmp="$(mktemp)"
- cp "$RBASH_CONFIG" "$tmp"
+ tmp="$(mktemp)"
+ cp "$RBASH_CONFIG" "$tmp"
- for id in $ids; do
- pattern="rbash_load \"sources/${id}_"
+ for id in $ids; do
+ pattern="rbash_load \"sources/${id}_"
- if ! grep -q -F "$pattern" "$tmp"; then
- echo "No such id: $id" >&2
- rm -f "$tmp"
- return 1
- fi
+ if ! grep -q -F "$pattern" "$tmp"; then
+ echo "No such id: $id" >&2
+ rm -f "$tmp"
+ return 1
+ fi
- echo "Disabling $id"
- grep -v -F "$pattern" "$tmp" > "$tmp.next"
- mv "$tmp.next" "$tmp"
- done
+ echo "Disabling $id"
+ grep -v -F "$pattern" "$tmp" > "$tmp.next"
+ mv "$tmp.next" "$tmp"
+ done
- sort -u "$tmp" > "$RBASH_CONFIG"
- rm -f "$tmp"
- rm -rf "$RBASH_CACHE_DIR"
+ sort -u "$tmp" > "$RBASH_CONFIG"
+ rm -f "$tmp"
+ rm -rf "$RBASH_CACHE_DIR"
}
+
# ---- rbash: bash/core/50_upgrade.bash ----
rbash-upgrade() {
@@ -495,9 +531,10 @@ __rbash_main() {
source "$RBASH_ENV"
fi
+ rbash_sources_load
__rbash_autoload
__rbash_setup_prompt
}
__rbash_main
-unset -f __rbash_main
\ No newline at end of file
+unset -f __rbash_main
diff --git a/bash/dist/sources.list b/bash/dist/sources.list
index aaa53ad..0e0d282 100644
--- a/bash/dist/sources.list
+++ b/bash/dist/sources.list
@@ -1,4 +1,3 @@
-02f2e97343c190295dd83d6a58fa6f5c17ee54a7df0fc71dc328bc2d267fccdf sources/09_ssh-agent
c4b84e73ff9c54631cb24131082e0c15eb53b6fbff47429a0a24aea65c002c52 sources/10_aliases
e50644286373408263ce5a6f455bf967585a767cce055e67423bd33fdafeab9f sources/12_shortcuts
043a103f7602304732b37c8219ba4f74bc8af37278fc6d2f63d642ef9a29a6fe sources/13_shortcuts_macos
diff --git a/bash/sources/09_ssh-agent b/bash/sources/09_ssh-agent
deleted file mode 100755
index 440f103..0000000
--- a/bash/sources/09_ssh-agent
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-
-# ssh-agent key lifetime
-alias ssh-add="ssh-add -t 43200"
-
-SSH_ENV="$HOME/.ssh/environment"
-
-function start_agent {
- echo "Initialising new SSH agent..."
- /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
- echo succeeded
- chmod 600 "${SSH_ENV}"
- . "${SSH_ENV}" > /dev/null
-
- # Test the ssh-add if status return 0/1, agent is initialized
- /usr/bin/ssh-add;
- ST=$?
- if [ $ST -ne 0 ] && [ $ST -ne 1 ]; then
- return $ST
- fi
-
- return 0
-}
-
-# Source SSH settings, if applicable
-
-if [ -f "${SSH_ENV}" ]; then
- . "${SSH_ENV}" > /dev/null
- #ps ${SSH_AGENT_PID} doesn't work under cywgin
- ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
- start_agent;
- }
-else
- start_agent;
-fi