Isso parece um problema de $PATH
ou de ambiente. Quando você executa esses comandos via su
, você os executa no contexto do ambiente de outro usuário. Para confirmar, tente fazer um su -c 'echo $PATH' at
e compare isso com seu $PATH
quando estiver logado como usuário at
.
Shells, como o Bash, têm 2 maneiras de originar seus arquivos de configuração ... normalmente. Por bash há 2 $HOME/.bashrc
e $HOME/.bash_profile
que são muitas vezes os que estão em jogo. Esses dois métodos de configuração de sourcing são chamados de interativos e não interativos e são discutidos na página Bash man bash
na seção INVOCATION.
INVOCATION
A login shell is one whose first character of argument zero is a -, or
one started with the --login option.
An interactive shell is one started without non-option arguments and
without the -c option whose standard input and error are both connected to
terminals (as determined by isatty(3)), or one started with the -i option. PS1
is set and $- includes i if bash is interactive, allowing a shell script or a
startup file to test this state.
The following paragraphs describe how bash executes its startup files.
If any of the files exist but cannot be read, bash reports an error. Tildes are
expanded in file names as described below under Tilde Expansion in the
EXPANSION section.
When bash is invoked as an interactive login shell, or as a
non-interactive shell with the --login option, it first reads and executes
commands from the file /etc/profile, if that file exists. After read‐ ing that
file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that
order, and reads and executes commands from the first one that exists and is
readable. The --noprofile option may be used when the shell is started to
inhibit this behavior.
When a login shell exits, bash reads and executes commands from the files
~/.bash_logout and /etc/bash.bash_logout, if the files exists.
When an interactive shell that is not a login shell is started, bash
reads and executes commands from ~/.bashrc, if that file exists. This may be
inhibited by using the --norc option. The --rcfile file option will force bash
to read and execute commands from file instead of ~/.bashrc.
When bash is started non-interactively, to run a shell script, for
example, it looks for the variable BASH_ENV in the environment, expands its
value if it appears there, and uses the expanded value as the name of a file to
read and execute. Bash behaves as if the following command were executed: if [
-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi but the value of the PATH variable is
not used to search for the file name.