Ubuntu 18.04.4(几周前从 18.04.3 自动升级)
/bin/bash
从 Gnome shell 登录后,在屏幕仅呈紫色且在桌面出现之前出现此消息:
Error found when loading /home/hfinger/.profile:
/home/hfinger/.profile: line 1: #: command not found
/home/hfinger/.bashrc: line 1: syntax error near unexpected token '('
/home/hfinger/.bashrc: line 1: '# ~/.bashrc: executed by bash(1) for non-login shells.'
As a result the session will not be configured correctly.
You should fix the problem as soon as feasible.
问题是,问题是什么?我搜索过 AskUbuntu,但似乎没有人遇到过这个确切的问题。我不认为这是升级的问题,因为在出现此问题之前它已经运行了大约一个月。
我从未碰过这两个文件,因为我很乐意让系统创建和配置它们。此外,我尽量保持 Ubuntu 的原始状态,以避免在升级到新版本后必须恢复设置。以下是每个文件的第一行:
.profile, line 1: # ~/.profile: executed by the command interpreter for login shells.
.bashrc, line 1: # ~/.bashrc: executed by bash(1) for non-login shells.
我需要如何修复这些文件?我应该提供哪些其他信息,以便比我更有知识的人可以解决这个愚蠢的问题?
答案1
如果你的文件开头有一个非打印字节序列,就会发生这种情况 - 例如字节顺序标记- 可能是因为在文字处理程序或 Windows 文本编辑器中编辑了它们。
例如,给定
$ file profile bashrc
profile: UTF-8 Unicode (with BOM) text
bashrc: UTF-8 Unicode (with BOM) text
(其中profile
和是我的和bashrc
的本地副本,并在开头插入字节序列)然后~/.profile
~/.bashrc
0xFE 0xFF
$ bash -c 'source profile; source bashrc'
profile: line 1: #: command not found
bashrc: line 1: syntax error near unexpected token `('
bashrc: line 1: `# ~/.bashrc: executed by bash(1) for non-login shells.'
最简单的修复方法是使用dos2unix
,默认情况下会删除 BOM:
$ dos2unix profile bashrc
dos2unix: converting file profile to Unix format...
dos2unix: converting file bashrc to Unix format...
$ file profile bashrc
profile: ASCII text
bashrc: UTF-8 Unicode text
或者您可以简单地用您发现的目录中的最新副本替换文件/etc/skel
(尽管显然这样您会丢失所有自定义设置)。
检查非打印字节的其他方法是
cat -A ~/.profile ~/.bashrc
其中 BOM 将显示为控制序列,如M-oM-;M-?#
或使用xxd
或od
直接检查字节序列
head -1 ~/.profile | od -tx1
xxd -l16 ~/.profile
该diff
命令有助于确认是有差异,但无法确定差异是什么:
$ diff profile ~/.profile
1c1
< # ~/.profile: executed by the command interpreter for login shells.
---
> # ~/.profile: executed by the command interpreter for login shells.
答案2
检查用户 shell 的简单方法...
如果您尚未Users and Groups
安装应用程序,请按以下方式安装...
sudo apt-get update
sudo apt-get install gnome-system-tools
按下Super键并输入“用户”,选择Users and Groups
应用程序,单击帐户名称,然后单击高级设置、高级选项卡,并验证正确的 Shell /bin/bash
。
答案3
Ubuntu 18.04.4(几周前从 18.04.3 自动升级)
/bin/bash
我不知道问题是什么,但这是我修复它的方法:
$ cd ~
$ which bash
/bin/bash
$ mv .profile .profile.bak
$ mv .bashrc .bashrc.bak
$ cd /etc/skel/
$ cp .profile ~/.profile
$ cp .bashrc ~/.bashrc
(注意:/bin/bash
是 的正确位置bash
。)
感谢大家的评论和帮助。