Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash gdm登录期间SSH代理PID初始化错误_Bash_Ssh_Ssh Agent_.profile - Fatal编程技术网

Bash gdm登录期间SSH代理PID初始化错误

Bash gdm登录期间SSH代理PID初始化错误,bash,ssh,ssh-agent,.profile,Bash,Ssh,Ssh Agent,.profile,我想在登录Ubuntu机器时启动ssh代理。因此,我在~/.profile中添加了以下代码 # # setup ssh-agent # # set environment variables if user's agent already exists [ -z "$SSH_AUTH_SOCK" ] && SSH_AUTH_SOCK=$(ls -l /tmp/ssh-*/agent.* 2> /dev/null | grep $(whoami) | awk '{print

我想在登录Ubuntu机器时启动ssh代理。因此,我在~/.profile中添加了以下代码

#
# setup ssh-agent
#
# set environment variables if user's agent already exists
[ -z "$SSH_AUTH_SOCK" ] && SSH_AUTH_SOCK=$(ls -l /tmp/ssh-*/agent.* 2> /dev/null | grep $(whoami) | awk '{print $9}')
[ -z "$SSH_AGENT_PID" -a -z `echo $SSH_AUTH_SOCK | cut -d. -f2` ] && SSH_AGENT_PID=$((`echo $SSH_AUTH_SOCK | cut -d. -f2` + 1))
[ -n "$SSH_AUTH_SOCK" ] && export SSH_AUTH_SOCK
[ -n "$SSH_AGENT_PID" ] && export SSH_AGENT_PID

# start agent if necessary
if [ -z $SSH_AGENT_PID ] && [ -z $SSH_TTY ]; then  # if no agent & not in ssh
  eval `ssh-agent -s` > /dev/null
fi

# setup addition of keys when needed
if [ -z "$SSH_TTY" ] ; then                     # if not using ssh
  ssh-add -l > /dev/null                        # check for keys
  if [ $? -ne 0 ] ; then
    alias ssh='ssh-add -l > /dev/null || ssh-add && unalias ssh ; ssh'
    if [ -f "/usr/lib/ssh/x11-ssh-askpass" ] ; then
      SSH_ASKPASS="/usr/lib/ssh/x11-ssh-askpass" ; export SSH_ASKPASS
    fi
  fi
fi
现在,当我登录到unity会话时,它会弹出一个严重错误,指示~/.profile中的第30行,即:

[ -z "$SSH_AGENT_PID" -a -z `echo $SSH_AUTH_SOCK | cut -d. -f2` ] && SSH_AGENT_PID=$((`echo $SSH_AUTH_SOCK | cut -d. -f2` + 1))

根据我的文本编辑器。我试图寻找一个解决方案,有趣的是,这个答案指向同一个网站,但另一个需要.bash_配置文件的解决方案。问题是,如果存在我不想要的~/.bash\u配置文件或~/.bash\u登录,我的~/.profile将被忽略,因为.profile包含一些更重要的初始化。我不明白这个表达式有什么问题?

问题是第一个
[]
中的
-a
参数

像这样重写它,它就会工作(仍然在做同样的事情):


你能提供错误信息吗?我能从downvoter那里得到一个合理的理由吗?谢谢你的输入,但是现在我得到了另一个错误。这里是错误消息的快照,这里()是我的个人资料。您是否尝试过让gdm处理启动?您的教程中也有这样的描述:我认为unity使用lightdm,在我的
$HOME
中没有
.xsession
文件。
[ -z "$SSH_AGENT_PID" ] && [ -z `echo $SSH_AUTH_SOCK | cut -d. -f2` ] && SSH_AGENT_PID=$((`echo $SSH_AUTH_SOCK | cut -d. -f2` + 1))