Variáveis de caminho bash diferentes ao usar o script ssh vs ssh interativo [closed]

1

Estou tentando executar alguns comandos Ruby (bundler / rvm) por meio de um script usando o Plink. Percebi que estava reclamando de não saber onde estavam alguns comandos. Parece que minha variável $PATH é diferente de quando eu uso um shell interativo e quando eu especifico um arquivo de comando com o Plink.

No meu .bash_profile , tenho isto:

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

Se eu entendi corretamente, quando não no modo interativo, .bashrc deve ser lido e não .bash_profile . Então, se está correto, aqui está a última linha do meu .bashrc:

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

Isso me diria que eu deveria ver isso no meu caminho, mas eu não sei. Aqui está o que eu recebo para o meu $PATH :

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Parece a variável $PATH padrão para mim. Por que meu .bashrc não estaria sendo adquirido quando eu tentasse executar comandos sobre o ssh?

Adicionei echo "the bashrc has been called" ao meu .bashrc . Eu nunca vejo isso quando eu corro meu script.

    
por tubaguy50035 10.11.2014 / 19:45

1 resposta

0

Existem três casos possíveis:

  1. Conector de login interativo: lê ~/.bash_profile , ~/.bash_login e ~/.profile .
  2. Conector de logon não interativo: lê ~/.bashrc .
  3. Não interativo: lê o arquivo contido na variável BASH_ENV , se existir.

Parece que você está caindo no terceiro caso. Você poderia, por exemplo, definir o PATH desejado em um arquivo: ~/.ssh/environment ou o seu poderia definir BASH_ENV neste mesmo arquivo para apontar para ~/.bashrc .

    
por 10.11.2014 / 22:24