| Deutsch English Français Italiano |
|
<vqc1hn$881$2@news.xmission.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder9.news.weretis.net!xmission!nnrp.xmission!.POSTED.shell.xmission.com!not-for-mail From: gazelle@shell.xmission.com (Kenny McCormack) Newsgroups: comp.unix.shell Subject: Re: (shellcheck) SC2103 Date: Thu, 6 Mar 2025 11:39:35 -0000 (UTC) Organization: The official candy of the new Millennium Message-ID: <vqc1hn$881$2@news.xmission.com> References: <vq9nto$18ps$1@news.xmission.com> <20250305103210.358@kylheku.com> Injection-Date: Thu, 6 Mar 2025 11:39:35 -0000 (UTC) Injection-Info: news.xmission.com; posting-host="shell.xmission.com:166.70.8.4"; logging-data="8449"; mail-complaints-to="abuse@xmission.com" X-Newsreader: trn 4.0-test77 (Sep 1, 2010) Originator: gazelle@shell.xmission.com (Kenny McCormack) Bytes: 2313 Lines: 40 In article <20250305103210.358@kylheku.com>, Kaz Kylheku <643-408-1753@kylheku.com> wrote: >On 2025-03-05, Kenny McCormack <gazelle@shell.xmission.com> wrote: >> All testing done with shellcheck version 0.10.0 and bash under Linux. >> >> Shellcheck says that you should replace code like: >> >> cd somedir >> do_something >> cd .. # (Or, cd -, which is almost, but not exactly the same thing) >> >> with >> >> ( >> cd somedir >> do_something >> ) > >That obviously won't work if do_something has to set a variable >that is then visible to the rest of the script. That's actually mentioned in the rationale on the web page. That if you need to set a variable, you can't use subshells. >Forking a process just to preserve a current working directory >is wasteful; we wouldn't do that in a C program, where we might >open the current directory to be saved, and then fchdir back to it. > >However, most of the actions in a shell script fork and exec >something anyway. Yes, but those would be the cheap form of fork(), where if it is quickly followed by an exec(), you don't have to do COW. Note that, in Linux, fork() is actually an alias for vfork(). -- The randomly chosen signature file that would have appeared here is more than 4 lines long. As such, it violates one or more Usenet RFCs. In order to remain in compliance with said RFCs, the actual sig can be found at the following URL: http://user.xmission.com/~gazelle/Sigs/TedCruz