I really want to make a bashrc function that I can call from the Gnome Terminal that will cd into a directory, then enter a distrobox container, then enter a conda environment, then launch a python script. (doing AI stuff and have many coexisting dependencies), I want a function because I would like to pass arguments to alter all 3 levels.

The distrobox “-- commands” doesn’t seem to work for this. Like these commands do not launch inside the terminal that called distrobox. I need the output of these commands in the original terminal, and I need the visual confirmation that each command has run correctly like the conda (env)user$ I typically get for running conda activate and the PS1 changes I have setup for each distrobox container. How can I run a bash function/script that emulates the behavior of the Gnome Terminal when a user enters each of these commands sequentially?

  • @[email protected]
    link
    fedilink
    English
    31 year ago

    Could you provide the exact command you’re using? I don’t have Distrobox installed at the moment to test, but theoretically distrobox-enter [container_name] -- your command here should work, but I also see there is a distrobox-host-exec "your command here" option (docs here) that I’ve yet to try, perhaps that will do the trick?

    • @j4k3OP
      link
      English
      31 year ago

      So I have containers and conda environments for Oobabooga, KoboldAI, Automatic 1111, ComfiUI, as GUIs, and separate CLI setups for Tortoise TTS, Selero, privateGPT, Langchain agents, and a couple of setups for additional CLI tools and a database. Most of these talk to each other over local host. Some of them like Oobabooga, I open every day and it just gets tedious. I have run the alias oobabooga="cd ~/foo/bar && distrobox enter foobar -- uname -n && conda activate baz && python ./baz.py" that can work but it is static and it doesn’t always activate the conda environment correctly. I think this may be due to how long it can take for the distrobox container to activate. The uname -n helps a bit and is the only visual indicator I managed to get working to show me that I am in the distrobox, but it flies above the output quickly and if the program exits in error, my PS1 variable is not changed so I don’t have my usual indicator that I am in a container. Overall, this can launch the script, but that is not what I am asking about or trying to achieve. I want the same visual indicators and clear execution as running each command sequentially in the terminal from a function or script.