bash-cd命令不工作?
我在处理我的bash_概要文件中的$PATH变量时(我想…),不知怎么搞砸了bash。据我记忆所及,我所做的只是在$PATH变量中添加一个目录。请帮忙 以下是我将cd放入不同目录时得到的信息bash-cd命令不工作?,bash,unix,Bash,Unix,我在处理我的bash_概要文件中的$PATH变量时(我想…),不知怎么搞砸了bash。据我记忆所及,我所做的只是在$PATH变量中添加一个目录。请帮忙 以下是我将cd放入不同目录时得到的信息 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
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_配置文件以撤销我所做的任何事情时发生的情况
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恢复正常工作之前,我已经完蛋了
/usr/bin/emacs.bash\u profile
或类似文件应在路径
中断时工作。/usr/bin/emacs.bash\u profile
或类似文件应在路径
中断时工作。$PATH
变量告诉shell在何处查找命令。如果你只是通过告诉它完整的路径来绕过它,它应该会工作。请尝试/usr/bin/emacs.bash_profile
变量$PATH
告诉shell在何处查找命令。如果你只是通过告诉它完整的路径来绕过它,它应该会工作。试试/usr/bin/emacs.bash\u profile
我想,您已经以使用dirname
和find
的方式定义了$PROMPT\u命令(可能在.bashrc中)。
这可以解释cd
的行为
默认情况下,
find
命令位于/usr/bin/find
中。因此,您可以使用它来查找重要命令的位置并重建路径信息。我想,您已经以使用dirname
和find
的方式定义了$PROMPT_命令(可能在.bashrc中)。
这可以解释cd
的行为
默认情况下,
find
命令位于/usr/bin/find
中。因此,您可以使用它来查找重要命令的位置并重建路径信息。当您制作cd
时,您会得到许多其他信息。由于您使用的是BASH,因此可能存在两个问题:
- 您已经定义了
。尝试取消定义它: $unset PROMPT_命令提示符命令
- 有一个
命令的别名:这在Kornshell很常见,因为那里没有可以放入提示字符串中的漂亮反斜杠字符。如果希望提示符中包含目录的名称cd
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"
PATH="/my/directory:$PATH"
很难看,不是吗?对于BASH,您不必经历所有这些,但是这在BASH中也起作用,我看到过这样做的地方,或者是出于对惯性的无知
试试这个:
$ type cd
你要么得到
$type cd
cd is a shell builtin
否则你会被解雇的
$ type cd
cd is an alias for ....
至于更新$PATH
,您可能忘记了将$PATH
放回新定义中,或者因为某人的目录名中有空格,所以使用引号。您的路径设置应如下所示:
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"
PATH="/my/directory:$PATH"
有人说应该是:
PATH="$PATH:/my/directory"
当你制作一张
cd
,你会得到一大堆其他的东西。由于您使用的是BASH,因此可能存在两个问题:
- 您已经定义了
。尝试取消定义它: $unset PROMPT_命令提示符命令
- 有一个
命令的别名:这在Kornshell很常见,因为那里没有可以放入提示字符串中的漂亮反斜杠字符。如果希望提示符中包含目录的名称cd
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"
PATH="/my/directory:$PATH"
很难看,不是吗?对于BASH,您不必经历所有这些,但是这在BASH中也起作用,我看到过这样做的地方,或者是出于对惯性的无知
试试这个:
$ type cd
你要么得到
$type cd
cd is a shell builtin
否则你会被解雇的
$ type cd
cd is an alias for ....
至于更新$PATH
,您可能忘记了将$PATH
放回新定义中,或者因为某人的目录名中有空格,所以使用引号。您的路径设置应如下所示:
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"
PATH="/my/directory:$PATH"
有人说应该是:
PATH="$PATH:/my/directory"