我正在使用 CetnOS 6 并希望在使用sudo
.
我发现这个问题https://superuser.com/questions/804128/bash-hints-does-not-work-after-sudo-or-man现在以下有效:
yu[tab]
完成yum
并使用另一个选项卡按下它会建议不同的 yum 命令yum upg[tab]
yum upgrade
根据需要自动完成sudo yu[tab]
sudo yum
按预期自动完成sudo yum upg[tab]
不会自动完成任何事情,也没有建议。即使使用sudo,我如何实现参数完成?
(我yum
只是举个例子,因为它在所有 CentOS 上都可用;其他命令的结果是一样的。)
关于我的系统的一些信息:
$ uname -a
Linux server 2.6.32-642.6.1.el6.x86_64 #1 SMP Wed Oct 5 00:36:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)
$ yum list installed | grep completion
bash-completion.noarch 1:1.3-7.el6 @epel
$ cat .bashrc
# .bashrc
# Source …
Run Code Online (Sandbox Code Playgroud) 我使用 Putty 通过 SSH 登录到各种 Linux 机器(主要是 CentOS 和 Ubuntu)。我使用 SSH 密钥身份验证,而密钥存储在 Keepass 2.x 中并通过 tha Keeagent插件(基本上是选美的替代品)移交给 Putty 。到目前为止工作正常。
但是登录时,使用sudo
需要我输入密码。有办法解决吗?那么,当通过 SSH 密钥登录时,sudo 不需要密码吗?
6 年前有一个非常相似的问题:sudo: don't ask password when login with ssh key 。给出的答案并不是真正的答案,而是一种使用 ssh 密钥登录并直接使用 root 登录的解决方法。不这样做的原因有很多。
我正在使用 ERR 陷阱来捕获 bash 脚本中的任何错误并输出日志中发生的事情。(类似于这个问题:Trap, ERR, and echoing the error line)它按预期工作。唯一的问题是,在我的脚本中的某个时刻,预期会发生退出代码 !=0。在这种情况下如何使陷阱不触发?
这是一些代码:
err_report() {
echo "errexit on line $(caller)" | tee -a $LOGFILE 1>&2
}
trap err_report ERR
Run Code Online (Sandbox Code Playgroud)
然后在脚本中:
<some command which occasionally will return a non-zero exit code>
if [ $? -eq 0 ]; then
<handle stuff>
fi
Run Code Online (Sandbox Code Playgroud)
每次命令返回非零值时,都会触发我的陷阱。我可以只针对这部分代码避免这种情况吗?
我检查了这个问题:使用`set -eu` 时 EXIT 和 ERR 陷阱的正确行为, 但我真的不知道如何将它应用于我的案例 - 如果完全适用的话。