このページで提案されている2番目の方法では、次のコマンドでbashが実行されているttyを取得します。
ps ax | grep $$ | awk '{ print $2 }'
確かにこれは少し怠け者であり、実行中のすべてのプロセスをリストして、そのうちの1つを抽出するだけです。より効率的ではないでしょうか(これが望ましくない効果をもたらすかどうかも尋ねています):
ps -p $$ | tail -n 1 | awk '{ print $2 }'
参考までに、この問題に出くわしたのは、最初のコマンドで実際に2行(またはそれ以上)の行が生成される場合があるためです。これは$$
、サブストリングとして含まれるPIDで実行されている別のプロセスがある場合、ランダムに発生します。2番目のアプローチでは、必要なことがわかっているPIDを要求することで、このようなケースを回避しています。
tty
、bashセッション内でコマンドを実行することです。あなたが使用して主張する場合ps
-ps -p $$ -o tty=