小编Ben*_*ird的帖子

Shebang 不会在 cron 中设置 SHELL

我有一个包含以下内容的脚本:

#!/bin/bash
printenv
Run Code Online (Sandbox Code Playgroud)

当我从命令行运行它时:

env testscript.sh
bash testscript.sh
sh testscript.sh
Run Code Online (Sandbox Code Playgroud)

每次,它输出SHELL=/bin/bash. 但是,当它从 cron 运行时,它总是输出SHELL=/bin/sh. 为什么是这样?我怎样才能让cron应用shebang?

我已经检查了 cron PATH;它确实包括/bin。

shell bash cron shebang

8
推荐指数
1
解决办法
4549
查看次数

如何预览 GRUB2 启动屏幕?

我一直在阅读一个教程,该教程展示了如何设置将在 GRUB2 引导选项菜单后面显示的背景图像。但是,我担心文本可能与我选择的图像不可见。如何在无需重新启动计算机的情况下预览屏幕的外观?

dual-boot grub2 images

7
推荐指数
1
解决办法
4758
查看次数

如何猫两个heredocs?

当给 cat 两个 heredocs 时,它只输出第二个。

$ cat <<HERE
> adsf
> qwer
> HERE
adsf
qwer
$ cat <<HERE <<ALT
> qwer
> asdf
> HERE
> zxcv
> yuop
> ALT
zxcv
yuop
Run Code Online (Sandbox Code Playgroud)

如果给定一个heredoc和一个文件,这也适用,但我注意到如果我给它一个文件和一个heredoc(相反的顺序),它仍然只输出文件。但是,如果我给 cat 两个文件,它会正确输出这两个文件。

为什么猫会这样?

cat here-document

7
推荐指数
3
解决办法
3171
查看次数

我如何评估两个命令?

如果我运行这个:

echo "echo 'a'; echo 'b'"
Run Code Online (Sandbox Code Playgroud)

它产生一个我可以运行的字符串,它可以工作 - echoes a\nb\n

但是,这不起作用:

$(echo "echo 'a'; echo 'b'")
Run Code Online (Sandbox Code Playgroud)

为什么不?它不适用于任何命令,而不仅仅是 echo。如何执行包含两个或多个命令的字符串?

shell bash quoting

3
推荐指数
1
解决办法
2774
查看次数

如何手动修改inode?

我使用的Ubuntu Linux和,只是为了好玩,我想创建一个硬连接到一个目录(如图这里)。因为我只是为了好玩而这样做,我不是在寻找其他人编写的任何类型的预先开发的目录硬链接软件,我想知道如何自己做。那么,如何直接手动修改 inode 呢?

理想情况下,我希望答案是可以从 Bash 命令行运行的 Linux 命令,但如果无法从那里执行此操作,我也会接受有关如何在 C 中执行此操作的信息或(作为最后的手段)集会。

bash c ubuntu hard-link inode

2
推荐指数
1
解决办法
4811
查看次数

为什么Linux不是操作系统?

我查了一个操作系统的字典定义:

支持计算机基本功能的低级软件,例如调度任务和控制外围设备。

嗯,这听起来很像内核的定义。

Linux 处理所有的硬件接口;用户态程序处理其他一切。然而我一直听到人们说“Linux 是一个内核,而不是一个操作系统”。那么……什么操作系统?为什么 Linux 不是一个?

linux linux-kernel

1
推荐指数
1
解决办法
1630
查看次数

标签 统计

bash ×3

shell ×2

c ×1

cat ×1

cron ×1

dual-boot ×1

grub2 ×1

hard-link ×1

here-document ×1

images ×1

inode ×1

linux ×1

linux-kernel ×1

quoting ×1

shebang ×1

ubuntu ×1