Skip to content

[Bug]: Error running devbox shell in environment with exported Bash function #995

Closed
@apgrucza

Description

@apgrucza
Contributor

Current Behavior (bug)
To reproduce, run these commands:

foo() { echo foo; }
export -f foo
devbox shell

This error appears:

bash: export: `BASH_FUNC_foo%%=() {  echo foo}': not a valid identifier

Despite the error, the foo function is still available in the shell.

Expected Behavior (fix)
The error should not appear.

Additional context
My devbox version -v:

Version:     0.4.9
Platform:    linux_amd64
Commit:      b03f0d26da3df4318f2a8d70c0531c0c77d0d33c
Commit Time: 2023-05-02T23:26:52Z
Go Version:  go1.20.3
Launcher:    0.2.0

Activity

v3ss0n

v3ss0n commented on Feb 17, 2024

@v3ss0n

same here any work around?

albx79

albx79 commented on Feb 24, 2024

@albx79

Apparently, since the exported functions are available inside the devbox environment, the workaround is just to ignore the error.

I'ld still love it for the error not to appear, though, as I wasted quite a bit of time trying to figure out what was wrong with my env.

Akiyamka

Akiyamka commented on Mar 21, 2024

@Akiyamka
Contributor

@albx79 , same thing, I spent about a few hours trying to figure out what went wrong

$ devbox shell
✓ Computed the Devbox environment.
Starting a devbox shell...
/tmp/devbox504213459/.zshrc:export:12: not valid in this context: BASH_FUNC_ml%

For some reason devbox take working function from my env

ml()
{
  eval "$($LMOD_DIR/ml_cmd "$@")"
}

and create this

export BASH_FUNC_ml%%="() {  eval \"\$(\$LMOD_DIR/ml_cmd \"\$@\")\"\
}";

Debug info

$ cat  /tmp/devbox504213459/.zshrc | grep BASH_FUNC_ml%% -B 1 -A 1
export BASH_ENV="/usr/share/lmod/lmod/init/bash";
export BASH_FUNC_ml%%="() {  eval \"\$(\$LMOD_DIR/ml_cmd \"\$@\")\"\
}";

$ zsh --version
zsh 5.9 (x86_64-redhat-linux-gnu)

$ cat /etc/os-release
NAME="Fedora Linux"
VERSION="38 (Workstation Edition)"

$ devbox version
0.10.1
Akiyamka

Akiyamka commented on Mar 24, 2024

@Akiyamka
Contributor

Look like it broke init_hook, it not running anymore

Akiyamka

Akiyamka commented on Mar 25, 2024

@Akiyamka
Contributor

plugins (corepack in my case) fails to execute they hooks too

Akiyamka

Akiyamka commented on Mar 25, 2024

@Akiyamka
Contributor

As I understand this code has this form intentionally, but I still can't figure out how to fix the error
https://antonyt.com/blog/2020-03-27/exploiting-cgi-scripts-with-shellshock

staylorx

staylorx commented on May 17, 2024

@staylorx

When i run devbox shell, I get this,

bash: export: `BASH_FUNC_which%%=() {  ( alias; eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@}': not a valid identifier

It doesn't seem to impact anything -- as other folks above have said, or is it really harmless? -- but it makes it hard for me to convince my team we should use this together.

Is there a flag or variable I can set in the dotenv.json file to bypass parsing or evaluating .bashrc or .bash_profile functions? Or is that misguided... that's part of devbox's charm I suppose when it all works smoothly?

Akiyamka

Akiyamka commented on Aug 8, 2024

@Akiyamka
Contributor

It doesn't seem to impact anything -- as other folks above have said, or is it really harmless?

I already mentioned that it breaks running init scripts. In other words, everything that's written in 

"shell": {  
    "init_hook": [  
        "echo 'This will never executed'"  
     ]  
}  

Not working because of crash

landtuna

landtuna commented on Dec 16, 2024

@landtuna

For a Red Hat system, this causes problems because of which2.sh, found in /etc/profile.d. A workaround is to put unset which above the call to eval "$(devbox global shellenv)".

added a commit that references this issue on Jul 1, 2025
65c3c1c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @staylorx@v3ss0n@landtuna@albx79@Akiyamka

      Issue actions

        [Bug]: Error running devbox shell in environment with exported Bash function · Issue #995 · jetify-com/devbox