我应该使用 usermod 为 bash shell 设置什么路径?

我应该使用 usermod 为 bash shell 设置什么路径?

我通过 ssh 连接到服务器。

现在我想将 shell 设置为 bash,因为目前 shell 是 sh。

sudo /sbin/usermod -s /usr/bin/bash santi

我应该使用/bin/bash还是/usr/bin/bash不重要?

答案1

文件中列出了允许的 shell /etc/shells

chsh从帐户运行santi,无需 sudo。它将阻止您使用未经允许的 shell。

管理员可以设置不允许的 shell,但这是一个坏主意,除非您故意设置访问受限的用户帐户。原因之一是普通用户无法再更改它。另一个原因是发行版不断/etc/shells更新,因此升级不会阻止用户登录,但如果您使用管理员权限为帐户提供未经允许的 shell,那么您就有责任小心不要锁定该帐户出去。

答案2

bash要确定系统上可执行文件的路径,您可以使用以下命令:

command -v bash

您也可以列出系统上可用的 shell:

cat /etc/shells

如果您想要以交互方式设置 shell:

chsh <userame>

希望这可以帮助 !

答案3

/bin/bash如果 bash 在和中都可用/usr/bin/bash(通常是因为是/bin一个符号链接)/usr/bin/usr 合并) 不要紧。两者都会起作用在这个系统上

不过,我更喜欢使用/bin/bashover /usr/bin/bash,因为这是它安装的传统位置,如果在其他系统中运行,它会更兼容(如果不是手动步骤,而是包含在可能在多台计算机上运行的脚本中) ,或者如果 bash 的位置是为了将其写在 shebang 上)

答案4

其中一个可能是另一个的链接......

传统上,shell(如 bash、csh 和 zsh)位于 /bin 中 - 因为即使在单用户模式下或 /usr 可能被卸载的其他时间(/usr 通常位于单独的分区上,甚至可能被安装)也需要 shell通过网络 - 因此在单用户模式下不容易使用)。

另一方面,在单用户模式下并不严格需要额外的 shell(比默认的一个/多个)(除非 root 碰巧使用其中一个),因此很自然地将这些 shell 放在 /usr/bin 中而不是放在 /usr/bin 中/垃圾桶。

/bin/zsh 和 /usr/bin/zsh 有什么区别?

/bin/bash和都是/usr/bin/bashBash shell 可执行文件的有效路径。

/bin/bash和之间的差异/usr/bin/bash是历史性的,并且取决于系统约定和配置。

传统上,Bash 安装在/binUnix 系统上的路径中,一些现代 Linux 发行版将其存储在该/usr/bin路径中。大多数系统都会创建从 /bin/bash 到 /usr/bin/bash 的符号链接,这意味着这两个路径是等效的。

/usr/bin是大多数现代 Linux 发行版上用户级可执行文件的默认位置。此路径包含用户安装的可执行文件,通常直到启动过程的后期才会安装。

/usr/bin/bash是 bash 可执行文件的路径(如果安装在此位置)。

符号链接确保引用的旧脚本和应用程序/bin/bash将继续正常工作,即使 Bash 可执行文件安装在/usr/bin

可以在命令中使用/bin/bash或为用户设置shell/usr/bin/bashusermodsanti

两者都会正常工作。

zsh 是在/usr/bin 下,也有在/bin 下,有什么区别?

/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin 之间的区别

文件系统层次结构标准

/bin/bash 和 /usr/bin/bash 之间的区别

如果我用“/bin/bash”或“/usr/bin/env bash”启动 bash 有什么区别?

相关内容