翼度科技»论坛 云主机 LINUX 查看内容

fish和pacman:“error: Unable to read input file: 是一个目录”报错的处

7

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
问题描述

依照Arch Linux Wiki中,此页面介绍的方法,通过保持默认 shell 为 Bash 不变,然后添加exec fish到合适的 Bash 配置文件中,比如.bashrc,可以使得 Bash 会正常执行/etc/profile和/etc/profile.d中的所有配置文件。然而,注意到,添加代码
  1. if [[ $(ps --no-header --pid=$PPID --format=cmd) != "fish" ]]
  2. then
  3.     exec fish
  4. fi
复制代码
到/root/.bashrc中以后(root账户的登录shell为bash),pacman安装部分软件包(例如bassh)的时候可能有如下报错:
  1. error: Unable to read input file: 是一个目录
  2. 错误:命令未能被正确执行
复制代码
亦即
  1. error: Unable to read input file: Is a directory
  2. error: command failed to execute correctly
复制代码
并且我们注意到,只有通过sudo pacman -S bash这样的指令进行软件包安装的时候会报错,而直接登录到root账户中再pacman -S bash并不会报错。
问题解决

注释或删除/root/.bashrc中有关于exec fish的代码,仅在你目前的登录账户中添加对应代码不会影响/etc/profile和/etc/profile.d的正常执行。
问题原因

sudo执行指令的时候不会执行/root/.bashrc,而登录到root账户的时候会。
问题的具体原因尚未追溯。但可以判断/root/.bashrc是直接原因。

来源:https://www.cnblogs.com/wold9168/p/17961883
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具