これはBashのバグのように見えman builtins
ます。古い動作によると、これは正しい動作です。
cd [-L|[-P [-e]] [-@]] [dir]
Change the current directory to dir. if dir is not supplied,
the value of the HOME shell variable is the default. Any
additional arguments following dir are ignored.
bug-bash
メーリングリストでバグを報告できます。詳細はこちら。
実際、バグは(ずっと前に)報告されました。修正済みのBashを今すぐ、今、今、正しく実行する方法を次に示します(17.10でテスト済み、他のユーザーでも動作するはずです)。
まず、作業するディレクトリを作成します。次に例を示します。
mkdir ~/bash
cd ~/bash
ソースパッケージとビルドの依存関係を取得します。
apt-get source bash
sudo apt-get build-dep bash
cd bash-4.4
編集config-top.h
してこれを変更します(32行目である必要があります)
#define CD_COMPLAINS
これに
/* #define CD_COMPLAINS */
次のdebian/changelog
ようなエントリを編集して上部に追加します(コマンドを使用することもできますdch -i
)。
bash (4.4-5ubuntu1+cd) artful; urgency=medium
* Fix cd.
-- Firas Kraiem <firas@fkraiem.org> Thu, 04 Jan 2018 21:11:22 +0900
最も重要な点は+foo
、現在のバージョン番号に追加するfoo
ことです(小文字の任意の文字列にすることができます。また、を使用する場合は注意してください。dch -i
最後の番号が増分されるため、現在の番号に戻す必要があります)。正しいリリース名(artful
ここ)。最後に、を実行しdpkg-source --commit
ます。
その後、debuild
コマンドを実行できます。すべてがうまくいった場合(エラーdebsign
は無視できます).deb
、親ディレクトリにいくつかのsが必要です。これは通常どおりインストールできます(すべてをインストールする必要はありません。今持っている; dpkg -l | grep bash
見つけるために使用してください)。
新しいパッケージのバージョン番号は、将来の更新が自動的に取得されるように設定されていることに注意してくださいbash
。更新しても問題が解決しない場合は、上記のプロセスを繰り返す必要があります。
(この回答は、最初にこの重複した質問に投稿されました。)
cd
2つの場所を指定しているため、取得した内容は理にかなっています。