[英]bash - cd command not working?
我以某种方式设法在bash_profile中摆弄$ PATH变量时弄糟了bash(我认为...)。 据我所记得,我所做的就是将目录添加到$ PATH变量中。 请帮忙!
这是我进入各种目录时所得到的
my-MacBook-Pro:~ myuser$ cd .rvm
-bash: dirname: command not found
-bash: find: command not found
my-MacBook-Pro:.rvm myuser$ cd
-bash: find: command not found
当我尝试进入.bash_profile撤消我所做的一切时,会发生以下情况...
my-MacBook-Pro:~ myuser$ emacs .bash_profile
-bash: emacs: command not found
my-MacBook-Pro:~ myuser$ sudo emacs .bash_profile
-bash: sudo: command not found
任何帮助将不胜感激。 我完全不知所措,直到bash可以再次正常工作!
PATH
中断时, /usr/bin/emacs .bash_profile
或类似文件应该可以工作。
$PATH
变量告诉外壳程序在哪里查找命令。 如果只是通过告诉它完整的路径来绕过它,那么它应该可以工作。 试试/usr/bin/emacs .bash_profile
。
当您执行cd
,您会得到很多其他的东西。 由于您正在使用BASH,因此存在两个可能的问题:
您已定义PROMPT_COMMAND
。 尝试取消定义:
$未设置PROMPT_COMMAND
cd
命令有一个别名 :这在Kornshell中很常见,在那里您没有可以放在提示字符串中的漂亮的反斜杠字符。 如果您希望在提示符下输入目录名称。
您必须执行以下操作:
function _cd
{
logname="$(logname)"
hostname="$(hostname)"
directory="$1"
pattern="$2"
if [ "$pattern" ] #This is a substitution!
then
\cd "$directory" "$pattern"
elif [ "$directory" ]
then
\cd "$directory"
else
\cd
fi
directory=$PWD
shortName=${directory#$HOME}
if [ "$shortName" = "" ]
then
prompt="~$logname"
elif [ "$shortName" = "$directory" ]
then
prompt="$directory"
else
prompt="~$shortName"
fi
title="$logname@$hostname:$prompt"
PS1="$title
$ "
}
alias cd="_cd"
丑陋不是吗? 对于BASH,您不必经历所有这些事情,但是这在BASH中也适用,而且我已经看到了这样做的地方是出于对惯性的无知。
尝试这个:
$ type cd
你要么得到
$type cd
cd is a shell builtin
否则你会得到
$ type cd
cd is an alias for ....
至于$PATH
的更新,您可能忘记了将$PATH
放回新的定义或引号中,因为有人在目录名中带有空格。 您的PATH设置应如下所示:
PATH="/my/directory:$PATH"
有人说应该是:
PATH="$PATH:/my/directory"
我猜想,您已经使用dirname
和find
的方式定义了$ PROMPT_COMMAND(也许在.bashrc中)。 那可以解释cd
的行为。
find
命令默认在/usr/bin/find
。 因此,您可以使用它来找到重要命令的位置并重建路径信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.