Bashはもはやディレクトリを変更しません。

Bashはもはやディレクトリを変更しません。

私のbashシェルは、ディレクトリを変更するためにcdを使用しなくなりました。私は仕事でこれを早く見つけました、そして私が開いたすべての新しいシェル(ターミナルやxtermなど)がホームディレクトリに閉じ込められて終了することができないことがわかりました(すでに開いている端末は正常に動作しています)。

[~]$ pwd
/home/sys/dave
[~]$ cd /
[~]$ cd Documents/
[~]$ pwd
/home/sys/dave
[~]$ type cd
cd is a shell builtin
[~]$ alias
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

私の考えは、メモリ不足ハンドラ(別名なしで組み込みバージョンを使用してCDをチェックします)のように処理する時間がない奇妙なことであると思います。

だから私は(はい、知っています)コンピュータを再起動しました。

新しく起動しても同じ問題です。

一方、CSHはうまく機能するので、上記のスニペットの直後に:

[~]$ csh
[~]$ cd /
[/]$ pwd
/
[/]$ cd ~/Documents/
[~/Documents]$ pwd
/home/sys/dave/Documents
[~/Documents]$ 

過去数日間、新しいものをインストールしたり更新したりせず、今夜遅くまでうまくいきました。

アイデア/助け/助けてくれてありがとう!

**更新**

だから私は.bashrcでこの行を見つけました。

export PROMPT_COMMAND="cd"

PROMPT_COMMANDをオフにすると、すべてがうまく機能します。

しかし……なに。私はこの行を.bashrcに入れず、今夜まですべてがうまくいきました。コメントアウトする必要がありますか、手動で設定を解除する必要がありますか、それとも魔女のようにコンピュータを燃やす必要がありますか?

答え1

PROMPT_COMMANDに設定するのはcd非常に一般的ないたずらであり、設定せずにあなたが唯一のユーザーであればそうです。あなたはすでに危険にさらされています。

友達が接続できたらたくさん見たいたずらなのに、話を交わしてみてください。

答え2

環境変数が設定されている場合は、PROMPT_COMMAND各デフォルトプロンプトが実行される前にこの値がコマンドとして実行されます。つまり、この変数の内容は、Bashがプロンプトを表示する前に通常のBashコマンドで実行されます。

[vivek@vivek-desktop man]$ PROMPT_COMMAND="echo Yahooo"
Yahooo
[vivek@vivek-desktop man]$ date
Tue Oct 20 23:50:01 IST 2009
Yahooo

源泉

cd引数なしでホームディレクトリに戻ります(便利です!)。

.bashrc各シェルが作成されると実行されるため、以前の端末は影響を受けません。

関連情報