Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

4
事后查找命令执行时间
我刚刚从bash提示符处执行了一个长时间运行的过程。事后看来,我希望我继续尝试time一下,或者记下启动它的时间。 有什么方法可以追溯获取此信息?在.bash_history似乎不包含时间戳。 在我的特殊情况下,它是Mac OS X,但我对一般的Unix / Linux解决方案感兴趣。 要澄清的是,该过程现已完成,除非绝对必要,我宁愿不要再次运行它!




5
导出一个env变量以在所有子shell上可用,并且可以对其进行修改吗?
假设我有 export MY_VAR=0 在~/.bashrc。 我有一个打开的gnome终端,在这个终端中,我将$MY_VARvalue 更改为200。所以,如果我愿意 echo $MY_VAR 显示在此终端200中。 现在,我在gnome终端中打开了另一个标签,然后执行 echo $MY_VAR ...而不是200,我有0。 当终端修改环境变量,并使此修改(设置为200)可用于所有后续子shell等时,我该怎么做才能保持200的值?这可能吗?

3
运行脚本的最快方法是什么?
我想知道运行脚本的最快方法是什么,我一直在阅读,在终端上显示脚本输出,将脚本重定向到文件或两者之间,速度存在差异/dev/null。 因此,如果输出不重要,那么即使脚本很小,也可以使脚本更快地工作的最快方法是什么。 bash ./myscript.sh -or- bash ./myscript.sh > myfile.log -or- bash ./myscript.sh > /dev/null
22 linux  bash 

2
bash`suspend`内置命令的目的是什么?
我输入help suspend并得到以下简短说明: suspend: suspend [-f] Suspend shell execution. Suspend the execution of this shell until it receives a SIGCONT signal. Unless forced, login shells cannot be suspended. Options: -f force the suspend, even if the shell is a login shell Exit Status: Returns success unless job control is not enabled …

2
bash脚本末尾的退出代码
我对bash脚本结尾处的退出代码的含义感到困惑:我知道退出代码0表示成功完成了退出,而且还有更多的退出代码编号(如果我没记错的话,为127)。 我的问题是关于在脚本末尾看到退出代码0时,即使脚本失败还是会强制退出代码为0还是有其他含义?

3
使用空的shell变量时发出错误
有时我使用$PROJECT_HOME/*来删除项目中的所有文件。如果PROJECT_HOME未设置环境变量(因为我设置了环境变量,su并且新用户未设置此环境变量),它将开始从根文件夹中删除所有文件。这是世界末日。 bash在外壳中使用未定义的环境变量时,如何配置抛出错误?

5
区分运行和bash shell脚本中的源代码?
我在这里要问的是非常非传统/非常规/危险的,或者我的Google-fu技能根本无法解决... 在bashshell脚本中,是否有任何简单的方法可以判断它是从另一个shell脚本获取资源,还是由它自己运行?换句话说,是否可以区分以下两种行为? # from another shell script source myScript.sh # from command prompt, or another shell script ./myScript.sh 我正在考虑做的是创建一个类似于实用程序的shell脚本,其中包含bash可以在获取源代码后使用的功能。当这个脚本自己运行时,我也会希望它根据定义的功能执行某些操作。这个shell脚本是否可以使用某种环境变量,例如 some_function() { # ... } if [ -z "$IS_SOURCED" ]; then some_function; fi 最好是,我正在寻找一种不需要调用者脚本设置任何标志变量的解决方案。 编辑:我知道在源代码和运行脚本之间的区别,我试图在这里找到什么,才能分辨出正在使用的脚本的区别(两种方式)。

2
在'bash -c'中添加参数
假设我想像这样通过Bash运行命令: /bin/bash -c "ls -l" 根据Bash的手册页,我也可以这样运行它: # don't process arguments after this one # | pass all unprocessed arguments to command # | | # V V /bin/bash -c ls -- -l 除非它似乎不起作用(它似乎被忽略了)。我是在做错什么,还是我在解释手册页时出错? 男人的相关语录: 如果存在-c选项,则从字符串读取命令。如果字符串后面有参数,则将它们分配给位置参数,从$ 0开始。 和 A-表示选项结束,并禁用进一步的选项处理。-后面的任何参数均被视为文件名和参数。

2
从符号链接中区分常规文件
我正在编写一个bash脚本,该脚本需要将常规文件与符号链接区分开。我以为我可以使用if / test表达式来做到这一点,但是它不起作用,正如我期望的那样: $ touch regular_file $ test -f regular_file; echo $? 0 $ test -h regular_file; echo $? 1 $ ln -s regular_file symlink $ test -h symlink; echo $? 0 $ test -f symlink; echo $? 0 这是为什么?而且,我该如何正确执行此操作?
22 bash 

2
如何在命令行中进行for循环?
让我们简单 for loop #!/bin/bash for i in `seq 1 10`; do echo $i done bash脚本中的AFAIK分号使Shell同步执行当前命令,然后转到下一个命令。按下Enter键实际上是相同的,只是不允许您输入以下命令,立即刷新缓冲区。 那么为什么shell无法解释以下行 for i in `seq 1 10`; do; echo $i; done 这for loop实际上如何工作?
22 bash  shell 

2
在bash中,管道未设置值后读取
编辑:原始标题为“ bash读取失败” 使用ksh时,我将read用作分隔值的便捷方法: $ echo 1 2 3 4 5 | read a b dump $ echo $b $a 2 1 $ 但是它在bash中失败了: $ echo 1 2 3 4 5 | read a b dump $ echo $b $a $ 我没有在手册页中找到失败的原因,知道吗?
22 bash  shell  pipe  read 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.