9
votes

Comment puis-je identifier l'émulateur de terminal actuel d'un script Bash?

J'ai un script qui ouvrira un nouvel onglet dans l'application Terminal OS X et j'essaie d'ajouter un soutien à ITERM2. Malheureusement, les méthodes permettant d'ouvrir des onglets dans les deux émulateurs de terminaux sont différents.

Comment pourrais-je dire lequel des deux est utilisé, ou est ouvert, pour exécuter de manière conditionnelle le script correct?


6 commentaires

Est-ce qu'ils définissent $ terme différemment?


La balise "AppleScript" s'applique-t-elle vraiment?


Je pensais que cela pourrait être une solution App AppleScript puisque les solutions de tabulation sont.


@Mrdaniel: hmm, peut-être. S'ils ont défini $ Term différemment, il aurait pu être une solution (bien que j'aurais pu mieux le donner mieux).


Ma réponse réelle qui aurait du mal à avoir été un commentaire était "SONT-ILS TRAVAILLER $ TERM différemment?" Le commentaire ci-dessus était un commentaire sur cette réponse, et cela n'a pas beaucoup de sens sur le contexte.


Et je vois que "définir-ils $ terme différemment?" est maintenant un commentaire (il est possible que je ne l'ai pas remarqué avant). Je supprimerai probablement la plupart de ces commentaires après un jour ou plus.


4 Réponses :


-2
votes

Vous devriez être capable de:

ps -p $$ | tail -1 | awk '{print $NF}'


1 commentaires

Ceci ne renvoie que la coquille qu'ils utilisent et non * l'émulateur de terminal (par exemple xterm ...)



12
votes

Je ne suis pas sûr de savoir comment raconter Ivererm et ItM2, mais vérifier le $ term_programme ENVAR. Pour moi (Mac OS X 10.7), il renvoie Apple_Terminal pour terminal.app et ivererm.app pour ITERM2.


1 commentaires

Le TERM_PROGRAM ENVAR a fonctionné super - je n'ai vraiment voulu pas tester pour Iterm.app quand même et utiliser la version Terminal.app en tant que valeur par défaut. Merci!



-2
votes

Je réalise que cela sonne sarcastique, bien que pourquoi n'a-t-il pas fait titre la fonction de "x-terminal-émulateur" variable "Fly-Little-Birdy"?

J'utilise Linux. Une fois que j'ai effectué un appel de fonction "x-terminal-émulateur" dans BASH, ce terminal est parti et inaccessible à mes scripts.

Mon point est que Bash a besoin de plus de fonctionnalités pour une fonctionnalité et une utilité complètes. Une caractéristique de "x-terminal-émulateur-attachtach-to-pid = terminal_name" irait bien.

Je pense que c'est une surveillance dans la fonctionnalité et l'utilité. Ils pourraient "résoudre". : /


1 commentaires

Qu'est-ce qui serait aussi utile, une fonction de commande pour bash: "x-terminal-émulateur -Utilisateur; (Ouvre la borne, puis la ligne suivante est une syntaxe de commande simple) CD FilePath / to / / Directory; File_Command; Si (conséquence) , alors (next_command), sinon (typique_command_confense); sortie; "



2
votes

Bien fonctionner sur Ubuntu & Mint Linux -

ps -o comm = -p "$ (($ (PPID = -o ppid = -p" $ (($ (ps-sid = -p "$$"))) ")") "


2 commentaires

Cela fonctionne sur ma arche + alacritty + zsh. Serait génial d'expliquer la magie plus loin, cependant :)


@Maricn, pour plus d'explication Voir UNIX.StaCKExchange.com/a/264353/110635