From aba84b26f7f82a0d087babfb71ddf18fc1f2a749 Mon Sep 17 00:00:00 2001 From: Hyko Date: Tue, 12 May 2026 17:33:53 -0400 Subject: [PATCH] docs(readme): replace process substitution with pipe syntax in install commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - swap `sudo bash <(curl …)` for `curl … | sudo bash -s -- setup` to fix `/dev/fd/63` errors under sudo - add callout explaining why process substitution fails with `sudo bash` - update one-shot command to `curl … | bash` and clarify auto-elevation behavior - fix version-reporting note to reflect pipe mode instead of process substitution --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index dfbe74a..857d1e2 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,17 @@ Linux multi-tool — a Bash menu and CLI for installing common server apps and r ## Quick install ```bash -sudo bash <(curl -fsSL https://git.hyko.cx/hykocx/lxs/raw/branch/main/lxs.sh) setup +curl -fsSL https://git.hyko.cx/hykocx/lxs/raw/branch/main/lxs.sh | sudo bash -s -- setup ``` This downloads the repo tarball, installs every file to `/usr/local/share/lxs/`, and creates the symlink `/usr/local/bin/lxs`. After install, sub-scripts run from disk — no network calls per command. -Or run once without installing: +> Avoid `sudo bash <(curl …)` — process substitution opens `/dev/fd/63` in your shell, which the root `bash` spawned by `sudo` cannot read (`bash: /dev/fd/63: No such file or directory`). Pipe through `sudo bash -s --` instead. + +Or run once without installing (no `sudo` needed for the entrypoint — sub-scripts auto-elevate when they need root): ```bash -bash <(curl -fsSL https://git.hyko.cx/hykocx/lxs/raw/branch/main/lxs.sh) +curl -fsSL https://git.hyko.cx/hykocx/lxs/raw/branch/main/lxs.sh | bash ``` When a new version is published in this repo, the interactive menu shows a *"Nouvelle version disponible"* banner; run `lxs update` to pull all updated files. @@ -73,7 +75,7 @@ After `lxs setup`, the full tree lives in `/usr/local/share/lxs/` and sub-script ### Releasing a new version -Bump only the [VERSION](VERSION) file — `lxs.sh` reads it at startup. Installed clients also fetch this file (cached 24 h in `~/.cache/lxs/`) to detect updates. In one-shot mode (`bash <(curl …lxs.sh)`) the file isn't readable from the process substitution, so `lxs version` reports `dev`. +Bump only the [VERSION](VERSION) file — `lxs.sh` reads it at startup. Installed clients also fetch this file (cached 24 h in `~/.cache/lxs/`) to detect updates. In one-shot mode (`curl … | bash`) the file isn't on disk next to the script, so `lxs version` reports `dev`. ## Requirements