Comandos não funcionam no xterm mas funcionam na sessão ssh

0

Eu instalei o Ubuntu 16.04 com Xrdp e Xfce4 para acesso remoto. Ruby instalado usando o RVM. Quando tento acessar o Ruby Interactive (irb), ele funciona perfeitamente a partir do shell SSH (eu digito o irb e posso usar o ambiente ruby interativo). No entanto, quando faço logon remoto e uso o Xterm, ele não consegue encontrar muitos comandos (como irb , reboot , shutdown ) Eu consulta usando RVM novamente e vejo que o ruby está instalado. Isto não é apenas sobre ruby, vejo muitos outros comandos não são acessíveis.

Quando eu digito

echo $SHELL

vejo

/bin/bash
    
por user1788944 28.09.2017 / 22:23

2 respostas

0

Parece que sua variável PATH é construída de forma diferente, dependendo de como entrar no shell.

Você pode verificar novamente com

echo $PATH

para as diferenças.

Não tenho experiência com o ambiente do Ruby, mas posso imaginar que exista um script sendo criado, que configura tudo (por exemplo, como com o nó / npm).

O Bash está potencialmente criando vários scripts, como / etc / profile, ~ / .profile ~ / .bash_rc, /etc/bash.bashrc.

Talvez sua configuração xterm faça uso de --noprofile ou --norc ou não seja invocada como shell de login e, portanto, não esteja obtendo uma parte relevante para configurar seu ambiente Ruby.

Do homem bash:

When bash is invoked as an interactive login shell, or as a  non-
inter-active  shell with the --login option, it first reads and 
executes com-mands from the file /etc/profile, if that file exists. 
After reading 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.

e

When an interactive shell that is not a login shell is started, bash 
reads and executes commands from /etc/bash.bashrc  and  ~/.bashrc, if
these files exist. This may be inhibited by using the --norc option.

Edit: aqui está uma captura de tela mostrando o que precisa ser configurado para o xterm

Fonteoriginalaqui: link

    
por Alex 28.09.2017 / 22:54
0

bash procura o comando digitado (supondo que o comando NÃO seja um alias ou um incorporado e não comece com " / ") nos diretórios listados na lista separada por dois-pontos contida no PATH variável. echo $PATH para mostrá-lo. Eu não tenho irb instalado, mas reboot e shutdown estão no diretório /sbin/ .

export PATH=$PATH:/sbin

tornará reboot e shutdown visíveis.

Você pode encontrar onde irb está localizado efetuando login com ssh e, em seguida,

type -p irb

Adicione este diretório ao seu PATH .

Verifique seu tipo de terminal ( echo $TERM ) em cada ambiente e veja se $TERM afeta seu ~/.bashrc .

    
por waltinator 28.09.2017 / 22:52