我有一个 Ubuntu Server VPS,我想/bin/bash/
用作我的 shell。我怎样才能改变我的外壳?我有 root 访问权限,但我不以 root 身份工作。所以破折号现在是我的默认外壳。
我已阅读如何将 Bash 设为 Ubuntu 上的默认 shell?和chsh
接缝是首选的方式。但是当我输入时,chsh /bin/bash
我收到此消息:
chsh: unknown user /bin/bash
如果我只是输入/bin/bash
Bash shell 接缝就可以正常工作。如何改变它?
我尝试更改用户的 shell,但使用了“sudo chsh”,并将根 shell 更改为“bash”而不是“/bin/bash”。现在,当我尝试更改它时,我收到“chsh:PAM 身份验证失败”,并且其他事情似乎也不起作用。
~$ sudo su
Cannot execute bash: No such file or directory
Run Code Online (Sandbox Code Playgroud)
恢复模式也会发生这种情况。我该怎么做才能将其更改为可用的内容?
我正在设置一个新的开发 Macbook Pro,并尝试用 zsh 替换 bash。我安装了 zsh 并且可以运行它来在会话中更改 shell。当我使用
sudo chsh -s /bin/zsh username
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
chsh:操作被拒绝,因为当前凭据没有适当的权限。操作被拒绝,因为当前凭据没有适当的权限。
AFAIK 我在机器上有管理员权限。什么可能导致这种情况?
我通过 MacPorts 安装了 bash 4.0,然后用于sudo chsh -s /opt/local/bin/bash my_user
更改我的外壳。
在此之前,我尝试只在chsh
没有 的情况下运行sudo
,但它不允许我将 shell 更改为该路径。
现在,当我尝试启动终端时,我收到一条消息,指出我的 shell 具有非法值,因此终端无法启动。我单击退出,不出所料但令人讨厌的是,它立即退出。
Mac OS X 10.5.8。一切都超级超级最新。
如何将我的 shell 更改为安装在我的主目录中的 shell?我在我的主目录中安装了一个新的 zsh,它被选中:
>> which zsh
>> /home/myname/bin/zsh
Run Code Online (Sandbox Code Playgroud)
它没有在 /etc/shells 中列出(也不会,因为我没有权限),那么我该如何安装呢?
chsh -s $(which zsh) myname
Changing shell for myname
Password:
chsh: "/home/myname/bin/zsh" is not listed in /etc/shells
chsh: use -l option to see list
Run Code Online (Sandbox Code Playgroud) 我的默认外壳是鱼,因为它更好。但通常当我运行脚本时,我收到的错误似乎是由 fish 处理的 bash 脚本引起的。我认为这是因为脚本编写者假设默认的 shell 是 bash,但我不明白其中的机制。
例如,CrashPlan install.sh 脚本以 bash shebang 开头:
~/CrashPlan-install> head install.sh
#!/bin/bash
#############################################################
# Linux Client Installer Script
#############################################################
Run Code Online (Sandbox Code Playgroud)
所以当我运行./install.sh
它时,它应该由 bash 处理,对吗?默认终端外壳应该是无关紧要的。然而,当我的默认 shell 是 fish 时,运行这样的脚本会导致 fish 返回错误,就好像它正在处理脚本一样:
fish: Expected a command name, got token of type “Run job in background”. Did you mean
“COMMAND; and COMMAND”? See the help section for the “and” builtin command by typing “help and”.
Standard input: sed -imod "s|Exec=.*|Exec=/usr/local/crashplan/bin/CrashPlanDesktop|"
/home/username/Desktop/CrashPlan.desktop && rm -rf /home/username/Desktop/CrashPlan.desktopmod
Run Code Online (Sandbox Code Playgroud)
这是因为我的计算机配置错误还是因为脚本是以不可移植的方式编写的?