diff --git a/bin/startb b/bin/startb index d4391d9..06c551d 100755 --- a/bin/startb +++ b/bin/startb @@ -4,7 +4,7 @@ # PATH 不完整问题: # 根据 niri 启动方式的不同,niri 读到的环境变量可能也不一样。 # - tty 进终端再 niri-session 拉起来大概是最完整的。毕竟已经加载 .xxxrc 了嘛。 -# - 而像我这样用 sddm 进的 niri,由于直接从 systemd-user 启动,中间也没有任何机会更新 PATH,相比就最麻烦了。 +# - 而像我这样用 sddm 进的 niri,由于直接从 systemd 启动,中间也没有任何机会更新 PATH,相比就最麻烦了。 # 根据谷鸽 AI 的回答,我这种情况只能在 ~/.config/environment.d/ 里静态补上环境变量。 # 之前不懂的时候用的是如下的奇技淫巧: @@ -19,27 +19,22 @@ if [ $# -lt 1 ]; then exit 1 fi -CMD_NAME="${1##*/}" -UNIT_NAME="${CMD_NAME}-$(date +%s%N)" - +UNIT_NAME="${1##*/}-$(date +%s%N)" ENV_ARGS=( --setenv=PATH="$PATH" - --setenv=PWD="$PWD" + --setenv=NVM_DIR="$NVM_DIR" + --setenv=NVM_BIN="$NVM_BIN" ) -[ -n "$NVM_DIR" ] && ENV_ARGS+=(--setenv=NVM_DIR="$NVM_DIR") -[ -n "$NVM_BIN" ] && ENV_ARGS+=(--setenv=NVM_BIN="$NVM_BIN") - systemd-run --user \ "${ENV_ARGS[@]}" \ --working-directory="$PWD" \ --slice=StartProcess.slice \ --unit="$UNIT_NAME" \ - --remain-after-exit \ --collect \ - -- "$@" + -- /bin/sh -c 'exec "$@"' _ "$@" if [ $? -eq 0 ]; then - echo "📜 Logs : journalctl --user -u $UNIT_NAME -f" - echo "✅ Manage : systemctl --user stop $UNIT_NAME" + echo "Logs : journalctl --user -u $UNIT_NAME -f" + echo "Note : '$UNIT_NAME' will auto-destruct on exit." fi