Ubuntu .bashrc在ssh登录时

Ubuntu .bashrc在ssh登录时,ubuntu,ssh,bash,Ubuntu,Ssh,Bash,当我ssh到运行Hardy 8.04的ubuntu框中时,我的.bashrc中的环境变量没有设置 如果我做了一个source.bashrc,变量设置正确,一切正常 为什么登录时不运行.bashrc?.bashrc在使用SSH登录时不提供源代码。您需要在.bash\u配置文件中找到它的源代码,如下所示: if [ -f ~/.bashrc ]; then . ~/.bashrc fi 如果ayman的解决方案不起作用,请尝试将文件命名为.profile,而不是.bash\u profile。

当我ssh到运行Hardy 8.04的ubuntu框中时,我的
.bashrc
中的环境变量没有设置

如果我做了一个source
.bashrc
,变量设置正确,一切正常


为什么登录时不运行
.bashrc

.bashrc
在使用SSH登录时不提供源代码。您需要在
.bash\u配置文件中找到它的源代码,如下所示:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

如果ayman的解决方案不起作用,请尝试将文件命名为
.profile
,而不是
.bash\u profile
。这对我很有用。

有关bash调用如何工作、点文件做什么以及如何使用/配置它们的优秀资源,请阅读以下内容:


    • 我也有类似的情况,比如霍布豪斯。我想使用命令

       ssh myhost.com 'some_command'
      
      “/var/some\u location”中存在“some\u命令” 所以我尝试在PATH环境中附加“/var/some_location” 通过编辑“$HOME/.bashrc”

      但那不起作用。因为default.bashrc(Ubuntu10.4LTS)阻止通过如下代码进行寻源

      # If not running interactively, don't do anything
      [ -z "$PS1" ] && return
      
      所以,如果您想更改ssh非登录shell的环境。

      您应该在该行上方添加代码。

      谢谢,伙计!这一点对我不起作用:)很酷的小费。我在运行jenkins的脚本时遇到了这个陷阱。我已经通过ssh登录,并且它工作正常。Jenkins以非交互方式登录,但失败了。我无法理解为什么常见的解决方案是甚至不为非交互Shell设置新路径。出于这个原因,应该有一个比if语句更高的值。似乎只有别名和交互工具的初始化应该在这一行下面……在其他版本的Ubuntu上,交互检查看起来是:
      bash#如果没有交互运行,就不要做任何事情,case$-in*i*);*)返回;;esac
      谢谢,这帮我解决了问题。但愿我在一小时前看到这个!令人惊叹的。我在这个细节上浪费了15分钟。我想。GUI登录时加载配置文件。bash_配置文件用于终端登录。这也适用于SSH登录到Debian Jessie docker容器(使用仅数据的容器进行持久存储)——但您可能还需要检查/etc/passwd,以检查您的登录shell是否为/bin/bash¬/bin/sh-->/bin/dash@RazecLuar
      .profile
      将由任何登录shell执行,不管所述shell是否打算生成GUI。您的评论完全与问题和答案相矛盾,这清楚地表明,
      .profile
      是在SSHing中调用的-一种明显的非GUI方法。这应该适用于任何带有Bash的sane发行版,因此所有这些评论都是过时的:)这对于Ubuntu 12.04 LTS服务器是不必要的,由于
      .bashrc
      是在您使用SSH登录时获得的,因此默认情况下。@orokusaki:更正,它是:)有一个rogue.bash_配置文件,该文件强制跳过.profile。与@LesterPeabody一样,由于rogue.bash_配置文件,my.bashrc没有在Ubuntu 12.04 LTS服务器上获得。它是由RVM安装创建的。我将RVM命令移动到.profile并删除.bash_profile。现在一切运行正常。fwiw Debian Jessie/8已经提供了
      .bashrc
      现成的资源-但它是从
      .profile
      而不是
      .bash\u profile
      。这到底是怎么一个“离题”呢?我不是这么严格,但我猜这属于serverfault.com、superuser.com或askubuntu。com@MichaelButler同意。想知道为什么他们不移动它而只是关闭它…@Luc-问题只能在创建后60天内移动。这个问题直到提出三年半后才作为离题题而结束。我相信60天规则与问题数据库的备份时间或其他有关。。。备份发生后,迁移变得更加困难。我认为这是一个非常有用的问题。当我必须ssh到机器A,以便ssh到机器B(只能通过A的本地网络访问)时遇到了这个问题。教会了我
      .bashrc
      .bash\u profile
      之间的实际区别!关键段落:“使其读取/etc/profile,然后读取.bash\u profile或.bash\u login或.profile中的一个。”