コマンドを使用してリモートコンピュータに接続した後、sftp hostname
プロンプトで「Escape to local shell」と入力!
できます。sftp
私が作成したシェルにあるかどうかはわかりますかsftp
?
ベストアンサー1
簡単に確認する方法はありません(たとえば、sftpで始まるシェルを識別する環境変数はありません)。
プロセスツリーを登って、祖先の1つがプロセスであることを確認できますsftp
。
#!/bin/bash
pid=$$
while :; do
# if we reach pid 1, we know we're not a child of an sftp process
[[ $pid -eq 1 ]] && break
# get parent of $pid
ppid=$(ps -o ppid= $pid)
# get the command associated with $ppid
cmd=$(ps -o cmd= -p $ppid)
# check if it was sftp
if [[ $cmd =~ sftp ]]; then
echo "Running under sftp"
exit
fi
pid=$ppid
done
echo "Not a child of sftp"