擁有互動式 shell 體驗,但通過 dash 執行所有內容
所以我開始沉迷於 POSIX 標準和簡單性,但我討厭沒有使用箭頭來自動完成字元,我想要一個很酷的 shell 提示符。
所以無論如何我可以在前端有魚或Zsh甚至bash之類的東西,這樣我就可以有自動完成功能,一個很好且資訊豐富的提示,能夠在命令上前進和後退,但是當我按下輸入命令本身是由 Dash 而不是互動式執行的,除非腳本在 shebang 中需要 bash fish 等?
我只是想在輸入命令時感到舒服,其餘的可能很苛刻和簡單我正在使用 Konsole,儘管我正在考慮更改為允許 Überzug 的控制台提示符(是的,我知道 GUI 的存在是有原因的,它只是為了 LF)也忘記了雖然 sh 重定向到 konsole 上的 dash 我告訴它去 bash
我想我可能誤解了你的問題,因為你所要求的似乎幾乎是大多數人的運作方式。我們使用互動式外殼進行互動。但我們希望腳本通常由不同的 shell 執行。
這通常“正常工作”,因為您將執行的絕大多數腳本都將包含一個 shebang 行。這樣,腳本本身就可以請求最接近其所需功能集的解釋器。如果它需要 POSIX 兼容性,它應該指定:
#!/usr/bin/sh
或者
#!/usr/bin/env sh
那可能是
dash
(在 Debian/Ubuntu 風格上),也可能是 BusyBoxash
(在 Alpine 上),或其他。由發行版本身決定sh
它預設提供的最符合 POSIX 的 shell。在遙遠的過去,在某些(大多數?)情況下,這是偶數bash
。在極少數情況下有人遺漏了shebang,好吧,對初學者的其餘程式碼質量持懷疑態度。但執行它不是問題——只需
sh scriptname.sh
.但是沒有人期望您在當今的基本 shell 下真正互動式地進行互動操作。就個人而言,我使用
fish
,這是您提到的任何形式的 POSIX 合規性中最遠的。但是fish
如果我需要可移植性,我可以用(最好是,因為它具有更現代化的腳本語言)或 POSIX 來編寫我的腳本。沒關係,因為處理它的是shebang。不是這種情況的一個領域是需要source的腳本,因為它們會更改目前 shell 實例的環境。這些不會由 shebang 指定的解釋器執行,而是由互動式 shell 本身執行。我自己很少發現這是一個問題,因為我使用的大多數軟體都在
fish
需要時提供了一個配置文件。但是在極少數情況下,當您確實需要獲取 POSIX 文件時,有一些實用程序(例如bass和其他工具)可以幫助您執行此操作。對於
bash
andzsh
,這甚至不是問題,因為大多數配置文件都寫入了最低公分母,它們可以在“接近 POSIX 到無關緊要”的 Zsh 和 bash 中獲取.