Bash 将函数添加到/etc/profile会导致gnome在登录后重新启动

Bash 将函数添加到/etc/profile会导致gnome在登录后重新启动,bash,login,profile,gnome,Bash,Login,Profile,Gnome,我最近在Ubuntu11.04中的/etc/profile中添加了以下bash函数定义(它是一个将CD命令快捷连接到特定开发目录的函数): 但是,一旦我这样做了(如果我从终端shell中获取/etc/profile,这很好),我就无法登录到Gnome。它登录正常,但随后它立即关闭Gnome并将我带回登录屏幕。如果我从我的/etc/profile中删除这些内容,它将再次允许我正常登录 我不清楚是什么原因导致gnome重新启动。关于问题在哪里有什么想法吗?您将其置于调试状态,然后查看是什么原因导致它

我最近在Ubuntu11.04中的/etc/profile中添加了以下bash函数定义(它是一个将CD命令快捷连接到特定开发目录的函数):

但是,一旦我这样做了(如果我从终端shell中获取/etc/profile,这很好),我就无法登录到Gnome。它登录正常,但随后它立即关闭Gnome并将我带回登录屏幕。如果我从我的/etc/profile中删除这些内容,它将再次允许我正常登录


我不清楚是什么原因导致gnome重新启动。关于问题在哪里有什么想法吗?

您将其置于调试状态,然后查看是什么原因导致它重新启动。使用
set-x
命令启用调试模式。类似地,
set+x
命令将禁用它


set-x
放在
/etc/profile
的顶部会导致打印调试信息

您将其置于调试状态,并查看是什么导致它重新启动。使用
set-x
命令启用调试模式。类似地,
set+x
命令将禁用它


set-x
放在
/etc/profile
的顶部会导致打印调试信息

/etc/profile
源于
/bin/sh
,这可能是Gnome启动期间发生的事情。它可能被特定于bash的
[…]
语法阻塞了。(
/bin/sh
可能是也可能不是指向
/bin/bash
的符号链接,具体取决于系统)


因为您的函数看起来是特定于BASH的,所以您可以考虑将其放入“代码>/ETC/BASH.BASHC ”,而不是<代码> /ETC/Prime<代码>,或者甚至<代码> $HOME/.BASHC 。(在非交互式shell中需要它吗?

/etc/profile
/bin/sh
提供,这可能是在Gnome启动期间发生的事情。它可能被特定于bash的
[…]
语法阻塞了。(
/bin/sh
可能是也可能不是指向
/bin/bash
的符号链接,具体取决于系统)


因为您的函数看起来是特定于BASH的,所以您可以考虑将其放入“代码>/ETC/BASH.BASHC ”,而不是<代码> /ETC/Prime<代码>,或者甚至<代码> $HOME/.BASHC 。(您需要在非交互式shell中使用它吗?

谢谢。最后我把它放在了/etc/bashrc中。谢谢。最后我把它放在了/etc/bashrc中。我很感激你的建议,我确实使用了这个,但另一个答案确实是问题所在,所以我接受了这个答案。不过,我还是很感激你提供的信息。。。这在将来肯定会有帮助。当然,没问题。祝你新年快乐,万事如意我很感激你的建议,我确实使用了这个,但另一个答案确实是问题所在,所以我接受了这个答案。不过,我还是很感激你提供的信息。。。这在将来肯定会有帮助。当然,没问题。祝你新年快乐,万事如意
################## JMOZTELEPORT BEGIN ##################

function JMozTeleport() {
  version=0.4.58
  pathtopythonpackages=`python -c "from site import getsitepackages; print getsitepackages()[0]"`
  pathtopythonteleport="$pathtopythonpackages/JMozTools-$version-py2.7.egg/JMozTools/JMozTeleport.py"

  # $1 is the command to run
  isversion=0
  ishelp=0
  if [[ "$1" == "-v"  || "$1" == "--version" ]]
  then
    isversion=1;
  fi
  if [[ "$1" == "-h"  || "$1" == "--help" ]]
  then
    ishelp=1;
  fi
  if [ -z $1 ]
  then
    python "$pathtopythonteleport" "-h"
  elif [ $1 == "version" ]
  then
    echo $version
  elif [ $isversion == 1 -o $ishelp == 1 ]
  then
    python "$pathtopythonteleport" "$@"
  else
    cd $(python "$pathtopythonteleport" "$@")
  fi
}
################### JMOZTELEPORT END ###################