一部のLinuxディストリビューションでは説明できないほど新しいターミナルインスタンスを分岐するスクリプトがあります。そうしないことをお勧めします。奇妙なことは、スクリプトを直接実行すると追加の./install.sh
端末インスタンスが作成されないことです。
curl qz.sh | bash # warning this will install a Linux Desktop App you may not want :)
- 存在するMacOS モハビ:うまくいきます。
- 存在するUbuntu22.04:仮想マシンではうまく機能します。
- 存在するFedora 34:仮想マシンではうまく機能します。
- 存在するUbuntu 20.10:新しい端末が生産されたそうです
- 存在するマンジャロXFCE
sudo ...
:スクリプトのコマンドに到達し、新しいターミナルインスタンスを作成するまでうまく機能します。
完全なソースコードここ。
問題のコードは次のとおりです。
# Install using unattended techniques: https://github.com/qzind/tray/wiki/deployment
echo -e "Download successful, beginning the install..."
case $OSTYPE in
"darwin"*)
# Assume .pkg (installer) for MacOS
sudo installer -pkg "$TEMP_FILE" -target /
;;
*)
# Assume .run (makeself) for others
if which sudo >/dev/null 2>&1 ; then
# use "sudo" if available
sudo bash "$TEMP_FILE" -- -y
else
# fallback to "su -c"
su root -c "bash '$TEMP_FILE' -- -y"
fi
;;
esac
Q:これが一部の環境で新しい端末インスタンスを作成するのはなぜですか?これが起こるのを防ぐ方法は何ですか?
答え1
インストーラを直接実行しても端末が生成されないのは、tty -s
端末ですでに実行されていることを確認するために makeself が使用されるためです。GitHubのソースコード。実行curl qz.sh | bash
時にスクリプトを直接実行すると、開いたパイプが存在しないため、テストはtty -s
失敗します。
端末が開かないようにするには、 makeself--nox11
フラグを使用して以下を引用することができます.閲覧ファイル:
--nox11: X11 で新しい端末の自動生成を無効にします。