MVCE:
在bash 4.1.2,Centos 6.10 (因为我们是怪物)。
sudo command vim
返回
sudo: command: command not found
我不明白为什么。在bash 4.4.23上,Mac OS High Sierra按预期工作。因为人们使用“命令”作为他们正在谈论的各种命令的占位符,因此很难在google上搜索这个命令。
实际问题:
我有一个名为vim的函数(如下图所示),将command从其对vim的调用中取出并不会像我预期的那样在bash4.4和4.1上失败。
如果不能写入文件,我有一个函数可以自动执行:
vim() {
#onl
运行我的bash脚本,我有很多次函数FuncGenrator。为了禁用/删除该功能,我执行以下操作:
unset FuncGenrator
unset命令禁用了脚本中的所有函数。主要问题是,当脚本运行时,每个函数都返回命令。例如,脚本unset_test.bash
#!/bin/bash
FuncGenrator () {
echo " I AM REAL FUNCTION BUT NEED TO UNSET LATTER "
}
FuncGenrator
unset FuncGenrator
# run again the function
FuncGen
当bash/zsh执行以下操作时发生了什么:
~ » /usr/bin/time -l sleep 1
1.00 real 0.00 user 0.00 sys
516096 maximum resident set size
0 average shared memory size
0 average unsh
我想在Cygwin bash shell下使用现有的DOS/Windows .bat脚本。.bat脚本创建了许多在.bat脚本结束后需要存在的变量。
这是可行的,但是变量不会被保留。
$ ./.phs_project_setup.bat .
这似乎没有扩展到采购.bat脚本,以便它创建的变量仍然存在于环境中。
$ . ./.phs_project_setup.bat .
-bash: @ECHO: command not found
-bash: SET: command not found
-bash: $'\r': command not found
-bash: REM:
我在嵌入式系统中使用了ash和bash,使用这两个shell获得了相同命令的以下错误消息
For ash shell
$ kill -9
sh: you need to specify whom to kill
For bash shell
$ kill -9
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
那么,我的问题是为什么在两个不同的shell中,对于同一个命令有两个不同的错误消息?我的理解是从命令返回错误消息,而不是从shell返回。
/usr/bin/printf util参数列表长度仅限于getconf ARG_MAX的最大命令行长度(即,在我的系统上为2097152);例如:
# try using a list that's way too long
/usr/bin/printf '%s\n' $(seq $(( $(getconf ARG_MAX) * 2 ))) | tail -1
输出:
bash: /usr/bin/printf: Argument list too long
今天,我被告知的外壳内置printfs没有这个限制;测试:
printf '%s\n' $(
我想用gnu时间来衡量一些小.c程序的运行时间。在这个人身上写的是:
-f FORMAT, --format FORMAT
Use FORMAT as the format string that controls the output of time. See the below more information.
然后在示例中,我们有:
To run the command `ls -Fs' and show just the user, system, and total time:
time -f "%E real,%U user,%S sys" ls -Fs
我使用了以下bash代码:
for pid in `top -n 1 | awk '{if($8 == "R") print $1;}'`
do
kill $pid
done
上面写着:
./kill.sh: line 3: kill: 29162: arguments must be process or job IDs
./kill.sh: line 3: kill: 29165: arguments must be process or job IDs
./kill.sh: line 3: kill: 29166: arguments must be