ITADN

[Bug]: Using Atuin breaks the init script of devbox

#3501Openassyrus-favolo 创建于 2026-05-26
bug
A
assyrus-favolocommented
### What did you expect to happen? I'm using [devbox](https://www.jetify.com/devbox). When I do `devbox shell` I don't expect to get any errors. ### What happened? A Bash error is triggered: ``` bash: 1779791173260108 - : syntax error: operand expected (error token is "- ") ``` <details> <summary>Full output</summary> ``` devbox shell Starting a devbox shell... ++ echo 'Welcome to devbox!' + cd /home/user/Documents/Develop/Personal/mago-playground + type refresh + export 'DEVBOX_REFRESH_ALIAS_71e8983acb6687c093faf35575fdc9baa8fdea90d0e66c406140946a8091d89f=eval "$(devbox shellenv --preserve-path-stack -c "/home/user/Documents/Develop/Personal/mago-playground")" && hash -r' + DEVBOX_REFRESH_ALIAS_71e8983acb6687c093faf35575fdc9baa8fdea90d0e66c406140946a8091d89f='eval "$(devbox shellenv --preserve-path-stack -c "/home/user/Documents/Develop/Personal/mago-playground")" && hash -r' + alias 'refresh=eval "$(devbox shellenv --preserve-path-stack -c "/home/user/Documents/Develop/Personal/mago-playground")" && hash -r' +++ trap -p DEBUG ++ __bp_trap_string= ++ trap - DEBUG ++ __bp_install ++ [[ __bp_trap_string="$(trap -p DEBUG)" trap - DEBUG __bp_install == *\_\_\b\p\_\p\r\e\c\m\d\_\i\n\v\o\k\e\_\c\m\d* ]] ++ trap '__bp_preexec_invoke_exec "$_"' DEBUG +++ __bp_preexec_invoke_exec DEBUG +++ __bp_last_argument_prev_command=DEBUG +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ eval 'local trap_argv=()' ++++ __bp_preexec_invoke_exec DEBUG ++++ __bp_last_argument_prev_command=DEBUG ++++ (( __bp_inside_preexec > 0 )) ++++ local __bp_inside_preexec=1 ++++ [[ ! -t 1 ]] ++++ [[ -n '' ]] ++++ [[ -n '' ]] ++++ [[ -z '' ]] ++++ return +++ trap_argv=() +++ local trap_argv +++ __bp_preexec_invoke_exec 'local trap_argv=()' +++ __bp_last_argument_prev_command='local trap_argv=()' +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ local prior_trap= +++ __bp_preexec_invoke_exec prior_trap= +++ __bp_last_argument_prev_command=prior_trap= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ unset __bp_trap_string +++ __bp_preexec_invoke_exec __bp_trap_string +++ __bp_last_argument_prev_command=__bp_trap_string +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ [[ -n '' ]] +++ __bp_preexec_invoke_exec __bp_trap_string +++ __bp_last_argument_prev_command=__bp_trap_string +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ __bp_adjust_histcontrol ++ local histcontrol ++ histcontrol= ++ histcontrol= ++ [[ '' == *\i\g\n\o\r\e\b\o\t\h* ]] ++ export HISTCONTROL= ++ HISTCONTROL= +++ __bp_preexec_invoke_exec __bp_adjust_histcontrol +++ __bp_last_argument_prev_command=__bp_adjust_histcontrol +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ [[ -n '' ]] +++ __bp_preexec_invoke_exec __bp_adjust_histcontrol +++ __bp_last_argument_prev_command=__bp_adjust_histcontrol +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ local existing_prompt_command +++ __bp_preexec_invoke_exec existing_prompt_command +++ __bp_last_argument_prev_command=existing_prompt_command +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ existing_prompt_command='__bp_trap_string="$(trap -p DEBUG)" trap - DEBUG __bp_install' +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ existing_prompt_command=: +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ existing_prompt_command=: +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ existing_prompt_command=: +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ __bp_sanitize_string existing_prompt_command : ++ local var=existing_prompt_command text=: sanitized ++ __bp_trim_whitespace sanitized : ++ local var=sanitized text=: ++ text=: ++ text=: ++ printf -v sanitized %s : ++ sanitized=: ++ sanitized=: ++ __bp_trim_whitespace sanitized : ++ local var=sanitized text=: ++ text=: ++ text=: ++ printf -v sanitized %s : ++ printf -v existing_prompt_command %s : +++ __bp_preexec_invoke_exec : +++ __bp_last_argument_prev_command=: +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ [[ : == \: ]] +++ __bp_preexec_invoke_exec : +++ __bp_last_argument_prev_command=: +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ existing_prompt_command= +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ PROMPT_COMMAND=__bp_precmd_invoke_cmd +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ PROMPT_COMMAND+= +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ (( BASH_VERSINFO[0] > 5 || (BASH_VERSINFO[0] == 5 && BASH_VERSINFO[1] >= 1) )) +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ PROMPT_COMMAND+=('__bp_interactive_mode') +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ precmd_functions+=(precmd) +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ preexec_functions+=(preexec) +++ __bp_preexec_invoke_exec '' +++ __bp_last_argument_prev_command= +++ (( __bp_inside_preexec > 0 )) +++ local __bp_inside_preexec=1 +++ [[ ! -t 1 ]] +++ [[ -n '' ]] +++ [[ -n '' ]] +++ [[ -z '' ]] +++ return ++ __bp_precmd_invoke_cmd ++ __bp_last_ret_value=0 ++ BP_PIPESTATUS=("${PIPESTATUS[@]}") ++ (( __bp_inside_precmd > 0 )) ++ local __bp_inside_precmd=1 ++ local precmd_function ++ for precmd_function in "${precmd_functions[@]}" ++ type -t __atuin_precmd ++ __bp_set_ret_value 0 '' ++ return 0 ++ __atuin_precmd ++ local EXIT=0 __atuin_precmd_time=1779791418,920733 ++ [[ ! -n 019e63d5d5b07493a697529b888df6b6 ]] ++ [[ 019e63d5d5b07493a697529b888df6b6 == __bash_preexec_failure__ ]] ++ local duration= ++ [[ -n '' ]] ++ (( BASH_VERSINFO[0] >= 5 )) bash: 1779791418920733 - : syntax error: operand expected (error token is "- ") ``` </details> ### Atuin doctor output ```yaml Atuin Doctor Checking for diagnostics [Shell] If you are using Bash, Atuin requires that either bash-preexec or ble.sh (>= 0.4) be installed. An older ble.sh may not be detected. so ignore this if you have ble.sh >= 0.4 set up! Read more here: https://docs.atuin.sh/guide/installation/#bash Please include the output below with any bug reports or issues { "atuin": { "version": "18.15.2", "commit": "NO_GIT", "sync": null, "sqlite_version": "3.46.0" }, "shell": { "name": "bash", "default": "bash", "plugins": [ "atuin" ], "preexec": "none" }, "system": { "os": "Ubuntu", "arch": "x86_64", "version": "24.04", "disks": [ { "name": "/dev/mapper/ubuntu--vg-ubuntu--lv", "filesystem": "ext4" }, { "name": "/dev/nvme0n1p2", "filesystem": "ext4" }, { "name": "/dev/nvme0n1p1", "filesystem": "vfat" } ] } } ``` ### Code of Conduct - [x] I agree to follow this project's Code of Conduct
1 条评论