相关疑难解决方法(0)

如何清除 Bash 的可执行文件路径缓存?

当我在没有指定可执行文件的完整路径的情况下执行程序时,Bash 必须搜索其中的目录$PATH才能找到二进制文件,似乎 Bash 会记住某种缓存中的路径。例如,我安装了从源代码到 的 Subversion 版本/usr/local,然后svnsync help在 Bash 提示符下键入。Bash 找到了/usr/local/bin/svnsync“svnsync”的二进制文件并执行了它。然后当我删除 Subversion 中的安装/usr/local并重新运行时svnsync help,Bash 响应:

bash: /usr/local/bin/svnsync: No such file or directory
Run Code Online (Sandbox Code Playgroud)

但是,当我启动一个新的 Bash 实例时,它会找到并执行/usr/bin/svnsync.

如何清除可执行文件路径的缓存?

bash cache executable

319
推荐指数
4
解决办法
9万
查看次数

cron 执行作业时的“工作目录”是什么?

我有一个脚本,当我从命令行运行它时cron,它可以工作,但是当我用它来安排它时,我收到了找不到文件或命令的错误。我的问题是双重的:

  1. 当我使用 调度 cron 作业时crontab -e,它是否使用我的用户 ID 作为其权限的基础?或者它是否使用某种类型的 cron 用户 ID 及其相关权限?

  2. 启动 cron 作业时,工作目录是什么?它是我指定要运行的脚本的目录,还是其他目录?

这是我的 cron 工作:

15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh
Run Code Online (Sandbox Code Playgroud)

这是实际的脚本:

vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt
Run Code Online (Sandbox Code Playgroud)

以下是我在查看由mail产生的消息时得到的错误cron:

sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found
Run Code Online (Sandbox Code Playgroud)

它找不到,template.txt但它与脚本位于同一目录中。它也不能运行ssmtp,但我可以作为我的用户。我缺少什么才能使其正常工作?

cron directory path cd-command

217
推荐指数
5
解决办法
23万
查看次数

如何设置我的默认 shell 来启动 tmux

我希望我的默认 bash shell 直接进入 tmux,而不是每次都必须输入 tmux。

shell bash terminal tmux bashrc

128
推荐指数
7
解决办法
13万
查看次数

linux下如何找到软件的安装路径?

在 linux 下,我通过键入(例如,fluidplot)来启动一个软件。如何找到这个软件的安装路径?

linux software-installation

91
推荐指数
4
解决办法
48万
查看次数

/usr/bin/env 如何知道使用哪个程序?

当我使用shebang#!/usr/bin/env python运行脚本时,系统如何知道python使用哪个?如果我python在环境变量中寻找 bin 路径,我什么也找不到。

env | grep -i python
Run Code Online (Sandbox Code Playgroud)

python environment-variables

74
推荐指数
3
解决办法
5万
查看次数

zsh 中有哪些功能而 bash 中缺少哪些功能,反之亦然?

作为 Linux 用户,我一直只使用 bash,因为它是我使用的每个发行版的默认设置。使用其他 Unix 系统(如 BSD)的人似乎更频繁地使用其他 shell。为了多学习一点,我决定尝试一下 zsh。

作为 bash 用户:

  • 我会错过哪些功能?
  • 我应该注意哪些?

bash zsh

63
推荐指数
4
解决办法
9392
查看次数

`cd` 在哪里?

在 bash 子 shell 中,运行 cd 时出现以下错误

sudo: cd: command not found
Run Code Online (Sandbox Code Playgroud)

这是意料之中的,因为我没有路径。通常要解决这个问题,我只提供完整路径,如下所示:(/usr/local/bin/foo)

令我惊讶的是,cd它似乎不在任何正常的地方。

which cd
whereis cd
ls /bin | grep cd
Run Code Online (Sandbox Code Playgroud)

相比之下,ls正是我所期望的。

which ls
/bin/ls
Run Code Online (Sandbox Code Playgroud)

cd命令位于何处?为什么与所有其他命令不同?

更新

另一个有趣的花絮,cd 没有出现在 hash

hash
0   /bin/ls
2   /usr/bin/find
2   /sbin/ip
1   /usr/bin/updatedb
1   /usr/bin/apt-get
Run Code Online (Sandbox Code Playgroud)

shell fhs bash cd-command

40
推荐指数
2
解决办法
4万
查看次数

如何测试命令是别名、函数还是二进制?

我有 command foo,我怎么知道它是二进制的,函数还是别名?

shell alias function

27
推荐指数
3
解决办法
9592
查看次数

没有参数的 set 命令有什么作用?

set没有参数的命令有什么作用?

正如我所看到的,它像env命令一样打印出我的环境变量,但按字母顺序排列。并进一步打印一些不同的信息(变量?函数?),例如:

__git_printf_supports_v=yes
__grub_script_check_program=grub-script-check
...
quote () 
{ 
    local quoted=${1//\'/\'\\\'\'};
    printf "'%s'" "$quoted"
}
quote_readline () 
{ 
    local quoted;
    _quote_readline_by_ref "$1" ret;
    printf %s "$ret"
}
Run Code Online (Sandbox Code Playgroud)

它是什么,它来自哪里?

我找不到有关set没有参数的命令的信息。实际上,我的 Linux 发行版中根本没有man页面set。

bash set

27
推荐指数
3
解决办法
14万
查看次数

ls 之类的系统命令是如何创建的?

我对 *nix 有一些疑问。

  • 我不知道是哪种类型的可执行文件ls,无论是 .sh 还是 .ksh 或任何其他类型的系统可执行文件(如果是),那是什么?

  • 当我试图查看ls命令的源代码是什么样子时,它显示了一些不可读的东西,*nix 使用什么方法来创建这些类型的不可读文件,我可以使我的文件类似于这些文件(例如ls- 不可读)。

shell executable architecture

19
推荐指数
2
解决办法
5076
查看次数