小编ext*_*xe5的帖子

为什么此 shell 脚本中包含反斜杠?

在我的conda.sh脚本副本中,我看到以下几行:

if [ -n "${_CE_CONDA}" ] && [ -n "${WINDIR+x}" ]; then
    SYSP=$(\dirname "${CONDA_EXE}")
else
    SYSP=$(\dirname "${CONDA_EXE}")
    SYSP=$(\dirname "${SYSP}")
fi
Run Code Online (Sandbox Code Playgroud)

我很好奇,为什么在前面的一个反斜杠d中dirname。我认为没有必要。这种反斜杠的使用也出现在源文件的其他地方。有没有理由这样做我失踪了?

bash shell-script

23
推荐指数
2
解决办法
2840
查看次数

为什么 `time` 不在 GNU Bash 手册中?

[fakename]$ help time
time: time [-p] pipeline
    Report time consumed by pipeline's execution...
Run Code Online (Sandbox Code Playgroud)

由此看来,它似乎time是一个 Bash 内置函数。但是,我在此页面上找不到它的描述:https : //www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html#Shell-Builtin-Commands。为什么会这样?

bash man time

11
推荐指数
2
解决办法
1820
查看次数

Bash 尝试编写两个 shell 提示?

出于教育目的,我正在查看连接到终端的正在运行的 bash 进程的 strace 输出。

我的 bash 进程的 PID 为 2883。

我打字

[OP@localhost ~]$ strace -e trace=openat,read,write,fork,vfork,clone,execve -p 2883 2> bash.strace
Run Code Online (Sandbox Code Playgroud)

进入一个终端。然后我进入我的 bash 进程,并进行以下交互:

[OP@localhost ~]$ ls
Run Code Online (Sandbox Code Playgroud)

查看输出,我看到

strace: Process 2883 attached
read(0, "l", 1)                         = 1
write(2, "l", 1)                        = 1
read(0, "s", 1)                         = 1
write(2, "s", 1)                        = 1
read(0, "\r", 1)                        = 1
write(2, "\n", 1)                       = 1
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fec6b1d8e50) = 3917
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=3917, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---
write(1, "\33]0;OP@localhost:~\7", 23) …
Run Code Online (Sandbox Code Playgroud)

bash tty strace

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

有没有办法更改正在运行的进程的进程组?

有没有办法改变正在运行的进程的PID、PPID、SID?答案是否定的是有道理的,但我想确定一下。

process session process-groups

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

我如何知道我正在查看的手册页是否正确?

例如,

[fakename]$ type echo
echo is a shell builtin
Run Code Online (Sandbox Code Playgroud)

但是man echo给了我 GNU coreutils 版本的echo. 判断我正在查看的手册页是否正确的最简单方法是什么,即如果我直接调用它,我会得到哪个实用程序?

man

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

‘uptime’的“users”字段是如何计算的?

对我来说,uptime产生了 9 个用户,但是

ps -Af | cut -f1 -d' ' | sort | uniq | wc -l产量 14。

我不太确定 9 是从哪里来的。

在我下结论之前,请告诉我你们是否没有这样的差异。

uptime

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

方括号中的进程是否与其他进程的调度方式相同?

ps(1),使用该-f选项,将输出方括号中没有关联命令行的进程,如下所示:

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Aug28 ?        00:07:42 /sbin/init
root         2     0  0 Aug28 ?        00:00:01 [kthreadd]
root         3     2  0 Aug28 ?        00:00:00 [rcu_gp]
root         4     2  0 Aug28 ?        00:00:00 [rcu_par_gp]
root         6     2  0 Aug28 ?        00:00:00 [kworker/0:0H-kblockd]
root         8     2  0 Aug28 ?        00:00:00 [mm_percpu_wq]
root         9     2  0 Aug28 ?        00:02:14 [ksoftirqd/0]
root        10     2  0 Aug28 ?        00:05:33 [rcu_preempt]
root        11     2  0 …
Run Code Online (Sandbox Code Playgroud)

process scheduling kernel

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

我在哪里可以找到允许的最大符号链接取消引用数?

在The Linux Programming Interface一书中,它说

内核对解除引用的数量施加了限制,以处理符号链接循环链的可能性。

我在哪里可以找到这个限制?

symlink

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

Linux 上有哪些类型的可执行文件?

例如,如果我这样做

[OP@localhost executable]$ cat garbage 
lalala
trololol
[OP@localhost executable]$ chmod +x garbage
[OP@localhost executable]$ ./garbage 
./garbage: line 1: lalala: command not found
./garbage: line 2: trololol: command not found
Run Code Online (Sandbox Code Playgroud)

Bash 似乎试图将这个“可执行文件”解释为脚本。但是,有两种情况显然不会发生这种情况:文件以#!, 和 ELF 文件开头。还有吗?某处是否有关于此的全面文档?

linux executable

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