busyboxのshがサポートする特別なプロンプトは何ですか?

busyboxのshがサポートする特別なプロンプトは何ですか?

PS1で時間通知を設定したいです。しかし、busyboxがどのシンボルをサポートしているかについてのドキュメントはありません。

知っている人はいますか?それは私が知っているすべてです。

PS1='\u@\h: \w \$'

答え1

BusyBoxには、ashとhushという2つのシェルがあります。何かを確認するには、次の手順を実行しますtype chdir。 ashには組み込み関数(同義語を含むcd)がありますが、hushにはありません。どちらにもオプションのプロンプト拡張機能があります。 AshはASH_EXPAND_PRMTコンパイル時に機能を有効にすることで有効になりますが、HushではFEATURE_EDITING_FANCY_PROMPT

この機能があると、ashは値が二重引用符PS1で囲まれた文字列のように展開され、構造も拡張されます。$foo$(command)`command`

一部のバックスラッシュエスケープが処理されます(置換後の灰)。彼らはbashのサブセットです。

  • \!: 行履歴の数
  • \a: ベル
  • \b:バックスペースキー
  • \e\E:脱出する
  • \f: ページ変更
  • \h: CPU名
  • \n: 新しいチーム
  • \r:入力する
  • \t: ラベル
  • \u:ユーザー名(のみ含むFEATURE_GETUSERNAME_AND_HOMEDIR
  • \v:縦タブ文字
  • \w:現在のディレクトリ、ホームディレクトリを表すバンド付き~(バンドのみ含むFEATURE_GETUSERNAME_AND_HOMEDIR
  • \W:現在のディレクトリ(省略されていません)
  • \xHHまたは、\XHHHHが2つの16進数の場合:16進コードで指定された文字
  • \[…\]:含まれているテキストは、幅を計算する目的で計算されません。

(ソースコードを見ると、このようなことが起こりますparse_and_put_promptlibbb/lineedit.c

関連情報