1
691
|
2
83
应该在解决方案涉及的任何地方工作
|
3
34
尝试
或
|
4
22
如果您只想确保用户使用bash调用脚本:
|
5
20
你可以试试:
或:
|
6
11
要测试以上内容,请说
要获取当前shell的名称,请使用
|
7
9
PS是最可靠的方法。shell envar不能保证被设置,即使是这样,它也很容易被欺骗。 |
8
8
我有一个简单的技巧来找到当前的外壳。只需键入一个随机字符串(它不是命令)。它将失败并返回“未找到”错误,但在行首,它将指出它是哪个shell:
|
9
7
这将始终提供实际使用的shell-获取实际可执行文件的名称,而不是shell名称(即
我知道这里有很多人说
|
10
4
我尝试过许多不同的方法,对我来说最好的方法是:
它也适用于 赛文 并且不能产生假阳性作为pid grepping。通过一些清理,它只输出一个可执行文件名(在 赛文 有路径):
您可以创建一个函数,这样就不必记住它:
…然后执行
在Debian和Cygwin下测试。 |
11
4
我的变体打印父进程。
为什么运行不必要的应用程序,而“awk”可以为您做到这一点? |
12
3
前提是你的
|
13
2
|
14
1
在Mac OS X上(&freebsd):
|
15
1
如果您只想检查是否正在运行(特定版本的)bash,
最好的方法是使用
在我编写的一个脚本中,
在第一种情况下,您可以省略对特性的一些偏执的功能检查, 假设未来的bash版本是兼容的。 |
16
1
不需要从“ps”的输出中对pid进行grepping,因为您可以从/proc目录结构中读取任何pid的相应命令行:
然而,这可能并不比简单地:
关于运行实际不同于名称所指示的shell,一个想法是使用以前获得的名称从shell请求版本:
sh似乎失败了,退出代码为2,而其他人给出了一些有用的东西(但我无法验证所有这些,因为我没有它们):
|
17
1
所有答案都不适用
这对我有用
此命令输出字符串如下
在我看来,这个解决方案不是非常可移植的,因为它在OS X上不起作用。( |
18
1
这不是很干净的解决方案,但可以满足您的需要。 我知道答案在这个美好的2015年有点晚了,但是…
现在你可以使用
不过,这种方法只适用于像ksh这样的外壳。 |
19
1
我的解决方案:
这应该可以在不同的平台和外壳之间进行移植。它使用
我在Debian和MacOS上用bash、zsh和fish进行了测试(在不改变fish的表达式的情况下,大多数解决方案都不起作用,因为它使用了不同的PID变量)。 |
20
1
有很多方法可以找到shell及其对应的版本。这里有几个对我有用。 直行
黑客方法 $>*****(键入一组随机字符,在输出中您将获得外壳名称。以我为例 -bash:chapter2-a-sample-isomorphic-app:未找到命令 ) |
21
1
要知道shell是否使用了dash/bash,请执行以下操作。 1) LS_瘻LA/BIN/SH , 如果结果是 /bin/sh->/bin/bash ==>那么您的shell正在使用bash。 如果结果是 /bin/sh->/bin/破折号 ==>然后您的外壳使用破折号。 如果您想从bash更改为dash或反之亦然,请使用下面的代码 ln-s/bin/bash/bin/sh/回车 (将shell改为bash) 注意:如果上述命令导致错误,说明/bin/sh已经存在,请删除/bin/sh并重试。 |
22
0
请使用以下命令:
|
23
-1
这个对瑞尔、MacOS、BSD和一些aixes很有效。
或者,如果pstree可用,也可以使用下面的方法,
|
Ginny · 使用sed/awk编辑第一个匹配模式后的第二个匹配模式 7 年前 |
igorkattar · 从预期输出中删除“…[C[0k” 7 年前 |
larrey · C-shell:查找文件超过12小时 7 年前 |
user1869582 · 我想循环浏览选项卡完成结果 8 年前 |
Newbie · 在shell脚本中运行命令 8 年前 |