インタラクティブシェルの経験がありますが、すべてをダッシュ​​で実行してください。

インタラクティブシェルの経験がありますが、すべてをダッシュ​​で実行してください。

だから私はPOSIX標準とシンプルさにこだわりましたが、文字をナビゲートするときに矢印オートコンプリート機能がないことが嫌いで、素晴らしいシェルプロンプトが欲しかったです。

とにかく、FishやZshなどのものを使用するか、フロントエンドにbashを追加してオートコンプリートを実行できます。矢印を使用してコマンドから前後に移動できることは、クールで有益なヒントになります。スクリプトがshebangでbash Fishなどを要求しない限り、Enterキーを押すと、コマンド自体は対話型ではなくDashによって実行されますか?

コマンドを快適に入力したいのですが、残りは難しくて簡単です。 Konsoleを使用していますが、Überzugのコンソールプロンプトを受け入れるように変更することを検討しています。 (はい、GUIは理由があることを知っています。LFに固有のものです。)また、shはkonsoleからdashにリダイレクトされますが、bashに行くと言ったことを忘れました。

答え1

ほとんどの人がどのように動作するかを尋ねているようですが、私はあなたの質問を誤解しているようです。私たちは対話に対話型シェルを使用します。しかし、私たちはスクリプトが通常他のシェルによって実行されることを期待しています。

これは通常「動作」します。広い実行するほとんどのスクリプトにはshebang行が含まれています。これにより、スクリプト自体がインタプリタを要求できます。最も近い必要な機能セットに追加します。 POSIX 互換性が必要な場合は、以下を指定する必要があります。

#!/usr/bin/sh

または

#!/usr/bin/env sh

これは(Debian / Ubuntuバージョンの場合)、BusyBox(Alpineの場合)、または他のものdashです。デフォルトでは、どのシェルがPOSIXと最も互換性があるかをash判断するのはディストリビューションによって異なります。sh遠い過去には一部(ほとんど?)の場合にこれもbash

まれな場合でも、誰かがシャバンを逃した場合は、まず残りのコードの品質に会議を持ってみてください。しかし、実行することは問題ではありません。ただ問題があるだけですsh scriptname.sh

しかし、今日のデフォルトのシェルを使って実際に対話的に作業を行うことができると期待している人はいません。個人的には、私はfishあなたが言及したすべての形態のPOSIX準拠から最も遠いものを使用します。ただし、fish移植性が必要な場合(可能であれば最新のスクリプト言語があるため)、またはPOSIXを使用してスクリプトを作成できます。それを扱うのはShebangだから問題ではない。

そうでない領域の1つは、スクリプトが必要であることです。源泉これは、現在のシェルインスタンスの環境を変更するためです。 Shebangが指定したインタプリタを使用して実行されるわけではありませんが、はい対話型シェル自体で実行されます。私が使用するほとんどのソフトウェアはfish必要に応じて設定ファイルを提供するので、これが問題になることはほとんどありません。ただし、POSIXファイルを必ず入手する必要がある場合は、次の方法を使用できます。ベースそして他の人がこれを行うのを助けます。

bashそして、zshほとんどの構成ファイルが最も低い共通分母に書き込まれるため、これは問題ではありません。これはZshとbashで「POSIX-to-not-matter」になるのに十分近いことができます。

関連情報