From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 1045 invoked from network); 21 May 2022 07:13:26 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 21 May 2022 07:13:26 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1653117206; b=BaB+j1N8bZ4V5PJLBbfaMZqMCvqCdrKM+UwCqUCUZ/YPF2KNKv20ysAX92iExF+GqnAQUzq/Ph C9xY2PE/CcTnM5qi+9R7ssUUjxSb564pqGepLLWJO1ytJdXxqRpml3CmoSHVU+bXfroEC1HkUG r3dlMzyl4z6KYG7u9qZmK+ECbT5SMHxk0I6OKa/iBpDZhoUhGdVCcPd/VmpdyL9KplYgPpqQ99 N776DZ/lj8y0P5WufFfG+a3lm0+LLMKw1U37LCabUKvo0gXHkGmr7JxflOt8aoM9ZMXSgnUIda fvQLJwB+UKkIXPmFnOvMhTyNHSahOLJV/qfQhSPvSCG5xQ==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-qv1-f43.google.com) smtp.remote-ip=209.85.219.43; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1653117206; bh=sK7+jZ81BgZJ2SjfpYufiyOD13TTsMaA1FyJnoCynWw=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=T73Vqq/M2R8Uq1237SNmUfJqm+zgHK6Af+CfnRAlQ65Ymz/MXhOKbHLn7Thv3Ts2AZyghV6iiw 0rmxoBija7W+TkdSqrqpNmsZ6SUd9r64yy68V5vCm2eisZKt2dZaVdmRGPUeRJ0E4/IAdrtQxT bBV7lwRCBGszlANpGsqI3rGBozscc3DQtOVq3Eara/pCl+JxRSVqUnnv/nY1BhHZTJ8VTJ9mcb 9X9wdlNAB+Ds/1oDULc+mopYqMJc0jhHTD3f1xCtwPbdiCS2UETwHmHr6QFxjhY+aUksKMp26p npksK1m5U/BZr0UX8u96uciZXoiavGXhlKWWJd/kz1gvOg==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=2WQTSwt4o0XImY5kDEwRlHb9zL4D7pYg1C5AXT8GQMU=; b=XDvThGwruhxLvJ2RJDmnKcE4La LPoZph3vK+qJIl0pHW7Nwbs0wOJjaWqnUq94TBegprLrxytmzFsuNz+C8w8r7KaF6k+KUz/9PdNJ2 zRNSbr/w3zqiDGgziTmK2s+DGCntEj4odDkX00M7i0ubEavXYs2vWopPq9KinZrTROFPItEfDalFL sPjN8zP9w+WYa7NeP2Oi9DSsbsGT8L0RHVAiu127jTBsvxnDxrymzjNoBYlscHIzKAK0TMpGoRcOD c0q26JCh5yDEK/yVcQ6v646IS93fSJ2MyCKx8fw2wc5j6LGzHmDCr68Bf+KmM3B+CsIgWVi69BXT6 zngx/2wg==; Received: from authenticated user by zero.zsh.org with local id 1nsJIj-000A8u-Os; Sat, 21 May 2022 07:13:25 +0000 Authentication-Results: zsh.org; iprev=pass (mail-qv1-f43.google.com) smtp.remote-ip=209.85.219.43; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-qv1-f43.google.com ([209.85.219.43]:38860) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1nsJHt-0009QI-Fe; Sat, 21 May 2022 07:12:33 +0000 Received: by mail-qv1-f43.google.com with SMTP id n10so8783012qvi.5 for ; Sat, 21 May 2022 00:12:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2WQTSwt4o0XImY5kDEwRlHb9zL4D7pYg1C5AXT8GQMU=; b=K+lGDyTSZAiAumCMbxmvg7KWZxp7yRjK3mCF0sRQOwt+dU7Rx+CHYjJTPz/sAS3XLz GTBBbZU5NkRmO4W6zaENo273Lh7qyV+Xc7/I8IT6Gu6U9VKyeECqGVDgJwZPYts4F6HR V06/pnminnXJXbYK3qVS7z505LFyRrgme/vejFQ4D9ckKNrd7fquJpE9phydZy+Bdw+8 HK+sAd/GeyJqPbrc0Hhb6X1JeX13ZSYR+RLroO5Gbf6SPPVOWipNOcuwePmvUWzeIPYj pd/yI8k2Mqr1upFu9ft5eVOeSSRkX2gD/mhnsYeNLHVs/rJT/ETh4mWuaj5uU34/JxDs usEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2WQTSwt4o0XImY5kDEwRlHb9zL4D7pYg1C5AXT8GQMU=; b=KOco1/vjuWRGNf6s/CGdwnCSuw0ddB9k+ftWFUxBsI4Teu06N9dz/wAhuFVbuW0dVJ CsSOP2GBO27cdDww8uZ/qyoIFaO7G7iw3gFmDqRpQm6X3CzVQ7c4OATiANI2791xsS7P 9GR0gzpzt2g8Xj0VZl7fIwNxRv/NOtMQ8DO9RRzkH1ZQbkaqqLJyweasaZEnfYgpuT0J CbNDsa9Rvzvz6jMtIzYZm4jN+bIjBWo2bq1JgdOpgIH4bsJMfebn5uJzh64+aKQqgcnF ygCYoeS0E4VTVGvHUPZvfEu4jzJysNP1zRTY+JG7+qeh98d7CZqZGVfE+0nKXJWT3h1T EiAw== X-Gm-Message-State: AOAM531k5ytmYoUw+WwKEwSWrrIkW2o3hCAxd8N4YeGjjQhCJJZotSPl 9nQKqUfHDlftH+tdVXq0pDJgl0aBysGQku5Ja5E= X-Google-Smtp-Source: ABdhPJzWdFGfPboREz4LQP9LEafOmiYsa9gxg2RRiVXq5sXllAA+Ohw+/GTM6Pg9aaopc44st3QrpFERYcggLNaFr0A= X-Received: by 2002:ad4:5d64:0:b0:461:e282:16f with SMTP id fn4-20020ad45d64000000b00461e282016fmr10776237qvb.8.1653117152272; Sat, 21 May 2022 00:12:32 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Roman Perepelitsa Date: Sat, 21 May 2022 09:12:20 +0200 Message-ID: Subject: Re: Command wrappers in $PATH, and re-executing the "correct" value To: Zach Riggle Cc: Zsh Users Content-Type: text/plain; charset="UTF-8" X-Seq: 27777 Archived-At: X-Loop: zsh-users@zsh.org Errors-To: zsh-users-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-users-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: On Sat, May 21, 2022 at 8:30 AM Zach Riggle wrote: > > I find that very frequently I write a wrapper for some CLI tool, say "foobar". > > I have a wrapper script ~/bin/foobar, which will be invoked for the > command "foobar". What my wrapper script does is immaterial, but > it eventually executes the /usr/local/bin/foobar with some set of > arguments. You can try this: #!/usr/bin/zsh # # usage: next-command [arg].. path=(${path:#${commands[$1]:h}}) "$@" Put this in a file named next-command somewhere in PATH. Then invoke it as `next-command foobar` from within foobar or from anywhere else. Nice things about this solution: - It's a script rather than an alias or a function, so it can be invoked from anywhere. - You can peel several levels of wrappers. Bad things about it: - If /usr/local/bin/foobar invokes baz, which is supposed to resolve as ~/bin/baz, it won't be found (or perhaps will be found in a different directory). Roman.