Trong phương thức thứ hai được đề xuất bởi trang này , người ta nhận được tty trong đó bash đang được chạy bằng lệnh:
ps ax | grep $$ | awk '{ print $2 }'
Tôi tự nghĩ rằng điều này chắc chắn là hơi lười biếng, liệt kê tất cả các quy trình đang chạy chỉ để trích xuất một trong số chúng. Nó sẽ không hiệu quả hơn (tôi cũng đang hỏi nếu điều này sẽ giới thiệu các hiệu ứng không mong muốn) để làm:
ps -p $$ | tail -n 1 | awk '{ print $2 }'
FYI, tôi đã gặp vấn đề này bởi vì đôi khi lệnh đầu tiên thực sự mang lại hai (hoặc nhiều hơn) dòng. Điều này sẽ xảy ra ngẫu nhiên, khi có một quá trình khác đang chạy với một PID chứa $$
chuỗi con. Trong cách tiếp cận thứ hai, tôi tránh các trường hợp như vậy bằng cách yêu cầu PID mà tôi biết tôi muốn.
tty
lệnh trong phiên bash của bạn. Nếu bạn nhấn mạnh vào sử dụngps
-ps -p $$ -o tty=