this post was submitted on 15 Aug 2023
41 points (100.0% liked)

Linux

45595 readers
700 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Hi all I have a quick question. Is it better for my zsh shell to be in /usr/bin/zsh or /bin/zsh. I remember reading that one of them would mess up the whole system since zsh is not posix compliant. I believe that szh shouldn't be set as the root shell. I now have it in /usr/bin/zsh, is that good? So now when I drop into a root shell I don't get they autocompletion feature that zsh has. I'd also lose that fancy theme. Does that mean my root shell is still bash? Thanks

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 1 points 10 months ago (1 children)

On your system. Check out the table halfway down where env is located on different systems: https://www.cyberciti.biz/tips/finding-bash-perl-python-portably-using-env.html

[–] [email protected] 1 points 10 months ago (1 children)

Sure, things usually put env in /usr/bin, but there's no guarantee for that. All standards like POSIX guarantee is that the standard PATH contains certain binaries.

Hardcoding /usr/bin/env is probably your best bet, but hardcoding any path is making assumptions that POSIX complaint shells don't guarantee.

That's why #!env is probably your best bet, but people hate shebangs without absolute paths.

[–] [email protected] 1 points 10 months ago

Sure, things usually put env in /usr/bin, but there’s no guarantee for that.

There is even less guarantee for it to be anywhere else.

Hardcoding /usr/bin/env is probably your best bet

Because it is the convention.

That’s why #!env is probably your best bet

It definitely isn't. That might work in your user space instance of bash in the desktop, but will likely fail in a script invoked during boot, and is guaranteed to fail on several non-gnu/non-linux systems.

#!/usr/bin/envis the agreed convention and there is no probably or but about that. If that does not work on a system it is a bug (looking at you BusyBox containers 🤨).