我通过 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/bash
over /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/bash
Bash shell 可执行文件的有效路径。
/bin/bash
和之间的差异/usr/bin/bash
是历史性的,并且取决于系统约定和配置。
传统上,Bash 安装在/bin
Unix 系统上的路径中,一些现代 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/bash
usermod
santi
两者都会正常工作。
zsh 是在/usr/bin 下,也有在/bin 下,有什么区别?
/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin 之间的区别