Когда вы делаете cd
, вы получаете кучу других вещей.Поскольку вы используете BASH, есть две возможные проблемы:
У вас есть PROMPT_COMMAND
определено .Попробуйте определить:не имейте хороших символов с обратной косой чертой, которые вы можете вставить в строку приглашения.Если вы хотите, чтобы в вашем приглашении было указано имя вашего каталога.
Вы должны были сделать что-то вроде этого:
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"