Linux系统常见小问题

1、新系统在输入命令时,不会自动提示,按上箭头(↑)和下向下箭头(↓)不会匹配之前的输入

以CentOS 为例,可以通过配置 ~/.bashrc 文件来实现按向上箭头显示最相近的命令。以下是具体的实现步骤

vi ~/.bashrc

# 在文件末尾添加一下内容
# 命令历史设置
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

# 刷新
source ~/.bashrc

如果是Ubuntu系统,稍微复杂一丢丢

首先vi ~/.bashrc

放开以下行的注释,没有的话就新加进去

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi 

刷新source ~/.bashrc

之后检查是否安装了 bash-completion 包:使用以下命令检查是否已安装该包

apt list --installed | grep bash-completion

如果未安装,可以使用以下命令进行安装:

apt install bash-completion 

打开readline配置文件vi ~/.inputrc

加入以下内容

"\e[A": history-search-backward
"\e[B": history-search-forward

重新启动终端:重启终端后,尝试使用上下键查看是否能够自动补全历史命令

2、centos6.10 更新yum镜像源

备份原来的源

mkdir /root/opt
mv /etc/yum.repos.d/*  /root/opt/

创建新的源

vi  /etc/yum.repos.d/CentOS-Base.repo

把以下内容复制到新的源文件中

[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos-vault/6.10/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
 
#released updates 
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.aliyun.com/centos-vault/6.10/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
enabled=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 

清除原来的源

yum clean all 

编译新的源

yum makecache

成功

3、升级git

一般情况下直接用yum install git 就可以了,但是yum装的版本还是低的话,那就只能自己装了

# 下载
wget https://github.com/git/git/archive/v2.3.0.zip --no-check-certificate
# 解压
unzip v2.3.0.zip

cd git-2.3.0

make prefix=/usr/local/git all
make prefix=/usr/local/git install

# 修改环境变量
vi ~/.bashrc
export PATH=/usr/local/git/bin:$PATH
source ~/.bashrc

4、Linux给普通用户赋予root权限

比如用户名叫xiaoming

4.1 修改 /etc/sudoers

# 把xiaoming加到root组
usermod -g root xiaoming
# 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL

4.2 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xiaoming ALL=(ALL) ALL

这两种方式相当于是给了xiaoming root组的权限,xiaoming需要使用 su - 才能执行root权限相关的操作

4.3 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0

# 找到如下行
xiaoming:x:500:500:xiaoming:/home/xiaoming:/bin/bash

# 修改后如下
xiaoming:x:0:500:xiaoming:/home/xiaoming:/bin/bash

xiaoming登录后,直接获取的就是root帐号的权限,都不用加su,当然这种风险也最大,不推荐

如果xiaoming仅仅对某个文件夹有权限要求,那可以修改对应的文件夹即可,比如

使用以下命令将文件和文件夹的所有者和所属组更改为xiaoming。将/path/to/files替换为你要赋予权限的文件或文件夹的路径。选项-R用于递归地将所有文件和子文件夹的所有者和所属组都设置为xiaoming

chown -R xiaoming:xiaoming /path/to/files

5、Ubuntu22.04 git clone 使用ssh失败问题

虽然配置了SSH公钥,但是下载代码的时候还是提示

这是由于在openssh(8.x版本)由于安全原因,替换了默认的加密算法rsa,改为SHA-1。可以通过配置文件修改默认的加密算法,继续使用rsa算法。

修改本地的配置文件(~/.ssh/config)

vi ~/.ssh/config

# 加入以下内容,如果使用的是多用户情况,那么每个用户都需要添加
Host 你想配置的域名或者ip
HostName 域名的hostname,可以和host一样
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
IdentityFile ~/.ssh/id_rsa

之后就可以愉快地下载代码了 

6、ubuntu22.04修改apt源为国内镜像

国外的源下载个软件太费劲了,还是配置个国内的源吧,首选阿里云

第一步,先备份原文件,防止需要恢复

cp /etc/apt/sources.list /etc/apt/sources.list.backup
第二步,把阿里云的源写入sources.list文件

可以先用echo -n /etc/apt/sources.list  把原来的内容清空,直接复制新内容进去

阿里云的源地址

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

第三步,更新 apt 软件包索引以使更改生效

apt update

更新成功 

7、No LSB modules are available

这个问题出现在你查看linux版本,比如输入lsb_release -a

或者需要安装其他什么软件依赖LSB模块时

怎么办,安装LSB呗,apt install lsb-core

但是你会发现报下边这个错误

The following packages have unmet dependencies:

bsdextrautils : Breaks: bsdmainutils (< 12.1.3) but 11.1.2ubuntu3 is to be installed

rpm : Depends: debugedit (= 4.14.2.1+dfsg1-1build2) but 1:5.0-4build1 is to be installed

E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages

 你去更新bsdextrautils,又报这个错误,郁闷不

最终发现原因了,是因为apt之前换过阿里云的源,再给换回来就行了 -_-||

然后执行apt install lsb-core 顺利安装成功

8、CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.

在使用Cmake进行编译时可能会报上边的错误,CMake 无法找到与 "Unix Makefiles" 对应的构建程序或者 CMAKE_MAKE_PROGRAM 没有设置。原因是由于缺少构建工具导致的,基本上就是没有装make

apt search build-essential

看一下有没有装,没有的话装一下就行了

apt update

apt install build-essential

9、执行shell文件报错 Syntax error: "(" unexpected

如果你在脚本开头使用 #!/bin/sh#!/bin/bash 来指定解释器,可能会因为默认解释器与你脚本中的语法不兼容而导致错误。

解决这个问题的方法是使用与你脚本语法兼容的解释器。以下是两种可行的解决方案:

  1. 使用正确的解释器:根据你的脚本语法,指定适当的解释器。例如,如果你的脚本使用 bash 特定的语法,将 #!/bin/sh 更改为 #!/bin/bash

  2. 手动指定解释器来执行脚本:在终端中,通过显式指定解释器来执行脚本。例如,对于一个名为 script.sh 的脚本,可以使用以下命令来执行

比如我直接用sh build.sh会包上边的错误

指定解释器就行了 bash build.sh

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值