Sample Header Ad - 728x90

$PATH in a shell made by xterm not including a command location, but shell still able to execute it

0 votes
1 answer
829 views
I am setting up a Debian 10 with fluxbox window manager. One of the components I need is miniconda, I've installed everything from the initial bash (no desktop) and everything works fine. Miniconda installation alters the /.bashrc file, appending the following lines to its contents: # >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/opt/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/opt/miniconda3/etc/profile.d/conda.sh" ]; then . "/opt/miniconda3/etc/profile.d/conda.sh" else export PATH="/opt/miniconda3/bin:$PATH" fi fi unset __conda_setup # type_conda_out.txt conda is a function conda () { if [ "$#" -lt 1 ]; then "$CONDA_EXE" $_CE_M $_CE_CONDA; else \local cmd="$1"; shift; case "$cmd" in activate | deactivate) __conda_activate "$cmd" "$@" ;; install | update | upgrade | remove | uninstall) CONDA_INTERNAL_OLDPATH="${PATH}"; __add_sys_prefix_to_path; "$CONDA_EXE" $_CE_M $_CE_CONDA "$cmd" "$@"; \local t1=$?; PATH="${CONDA_INTERNAL_OLDPATH}"; if [ $t1 = 0 ]; then __conda_reactivate; else return $t1; fi ;; *) CONDA_INTERNAL_OLDPATH="${PATH}"; __add_sys_prefix_to_path; "$CONDA_EXE" $_CE_M $_CE_CONDA "$cmd" "$@"; \local t1=$?; PATH="${CONDA_INTERNAL_OLDPATH}"; return $t1 ;; esac; fi } root@Zumbi:~# /opt/miniconda3/bin/conda shell.bash hook > hook_out.txt export CONDA_EXE='/opt/miniconda3/bin/conda' export _CE_M='' export _CE_CONDA='' export CONDA_PYTHON_EXE='/opt/miniconda3/bin/python' # Copyright (C) 2012 Anaconda, Inc # SPDX-License-Identifier: BSD-3-Clause __add_sys_prefix_to_path() { # In dev-mode CONDA_EXE is python.exe and on Windows # it is in a different relative location to condabin. if [ -n "${_CE_CONDA}" ] && [ -n "${WINDIR+x}" ]; then SYSP=$(\dirname "${CONDA_EXE}") else SYSP=$(\dirname "${CONDA_EXE}") SYSP=$(\dirname "${SYSP}") fi if [ -n "${WINDIR+x}" ]; then PATH="${SYSP}/bin:${PATH}" PATH="${SYSP}/Scripts:${PATH}" PATH="${SYSP}/Library/bin:${PATH}" PATH="${SYSP}/Library/usr/bin:${PATH}" PATH="${SYSP}/Library/mingw-w64/bin:${PATH}" PATH="${SYSP}:${PATH}" else PATH="${SYSP}/bin:${PATH}" fi \export PATH } __conda_hashr() { if [ -n "${ZSH_VERSION:+x}" ]; then \rehash elif [ -n "${POSH_VERSION:+x}" ]; then : # pass else \hash -r fi } __conda_activate() { if [ -n "${CONDA_PS1_BACKUP:+x}" ]; then # Handle transition from shell activated with conda = 4.4. See issue #6173. PS1="$CONDA_PS1_BACKUP" \unset CONDA_PS1_BACKUP fi \local cmd="$1" shift \local ask_conda CONDA_INTERNAL_OLDPATH="${PATH}" __add_sys_prefix_to_path ask_conda="$(PS1="$PS1" "$CONDA_EXE" $_CE_M $_CE_CONDA shell.posix "$cmd" "$@")" || \return $? rc=$? PATH="${CONDA_INTERNAL_OLDPATH}" \eval "$ask_conda" if [ $rc != 0 ]; then \export PATH fi __conda_hashr } __conda_reactivate() { \local ask_conda CONDA_INTERNAL_OLDPATH="${PATH}" __add_sys_prefix_to_path ask_conda="$(PS1="$PS1" "$CONDA_EXE" $_CE_M $_CE_CONDA shell.posix reactivate)" || \return $? PATH="${CONDA_INTERNAL_OLDPATH}" \eval "$ask_conda" __conda_hashr } conda() { if [ "$#" -lt 1 ]; then "$CONDA_EXE" $_CE_M $_CE_CONDA else \local cmd="$1" shift case "$cmd" in activate|deactivate) __conda_activate "$cmd" "$@" ;; install|update|upgrade|remove|uninstall) CONDA_INTERNAL_OLDPATH="${PATH}" __add_sys_prefix_to_path "$CONDA_EXE" $_CE_M $_CE_CONDA "$cmd" "$@" \local t1=$? PATH="${CONDA_INTERNAL_OLDPATH}" if [ $t1 = 0 ]; then __conda_reactivate else return $t1 fi ;; *) CONDA_INTERNAL_OLDPATH="${PATH}" __add_sys_prefix_to_path "$CONDA_EXE" $_CE_M $_CE_CONDA "$cmd" "$@" \local t1=$? PATH="${CONDA_INTERNAL_OLDPATH}" return $t1 ;; esac fi } if [ -z "${CONDA_SHLVL+x}" ]; then \export CONDA_SHLVL=0 # In dev-mode CONDA_EXE is python.exe and on Windows # it is in a different relative location to condabin. if [ -n "${_CE_CONDA+x}" ] && [ -n "${WINDIR+x}" ]; then PATH="$(\dirname "$CONDA_EXE")/condabin${PATH:+":${PATH}"}" else PATH="$(\dirname "$(\dirname "$CONDA_EXE")")/condabin${PATH:+":${PATH}"}" fi \export PATH # We're not allowing PS1 to be unbound. It must at least be set. # However, we're not exporting it, which can cause problems when starting a second shell # via a first shell (i.e. starting zsh from bash). if [ -z "${PS1+x}" ]; then PS1= fi fi root@Zumbi:~# type -f conda bash: type: conda: not found ``` ===EDIT 2=== Only now, while editing FB's menu, I could see how xterm is called: it is done by a wrapper: x-terminal-emulator -T "Bash" -e /bin/bash --login and the --login option, as explained in bash documentation , > Make bash act as if it had been invoked as a login shell So it explains why bash was not getting $PATH. Using fbrun xterm results in a bash with the default, initialized system $PATH as expected.
Asked by Mauricio Reis (1 rep)
May 22, 2020, 01:36 AM
Last activity: May 22, 2020, 03:40 PM