2017-05-31 9 views
0

Ich habe zwei XTerm-Terminals auf meinem Ubuntu-Desktop. Mein Ziel ist es, py2 virtualenv zu aktivieren, wenn ich das erste öffne und py3, wenn ich das zweite öffne.Zwei XTerm mit verschiedenen Virtualenvs

versucht, das Verhalten zu manipulieren, indem er die Exec Linie unter [Desktop Entry] ändern, aber es nicht

[Desktop Entry] 
Name=PY2-VENV 
Exec=uxterm && source /home/user/py2-venv/bin/activate 
Terminal= true 
. 
. 
. 

es Irgendwelche Ideen, wie zu tun hat funktioniert?

Antwort

1

Sie könnten

gemeint haben
Exec=uxterm 

(ein Shell-Skript zum Einrichten xterm verwendet) statt

Exec=uterm 

jedoch, dass && kann nicht funktionieren, da die desktop specification Anrufe für etwas das kann direkt in einen execvp Anruf umgewandelt werden:

Der Exec-Schlüssel muss eine Befehlszeile enthalten. Eine Befehlszeile besteht aus einem ausführbaren Programm, dem optional ein oder mehrere Argumente folgen können. Das ausführbare Programm kann entweder mit seinem vollständigen Pfad oder nur mit dem Namen der ausführbaren Datei angegeben werden. Wenn kein vollständiger Pfad angegeben ist, wird die ausführbare Datei in der Umgebungsvariablen $ PATH gesucht, die von der Desktopumgebung verwendet wird. Der Name oder Pfad des ausführbaren Programms darf nicht das Gleichheitszeichen ("=") enthalten. Argumente sind durch ein Leerzeichen getrennt.

Argumente können insgesamt zitiert werden. Wenn ein Argument ein reserviertes Zeichen enthält, muss das Argument in Anführungszeichen gesetzt werden. Die Regeln für das Zitieren von Argumenten gelten auch für den ausführbaren Namen oder Pfad des ausführbaren Programms, wie es zur Verfügung gestellt wird.

Shell Unter der Annahme bash, können Sie seinen Kommentar Zeilenoptionen für den Hinweis auf Ihre anderen Shell-Initialisierungsdateien:

--init-file file               
    --rcfile file                
      Execute commands from file instead of the system wide initial‐ 
      ization file /etc/bash.bashrc and the standard personal initial‐ 
      ization file ~/.bashrc if the shell is interactive (see INVOCA‐ 
      TION below). 

So etwas wie dies, zum Beispiel:

Exec=uxterm -e bash --rcfile /home/user/py2-venv/bin/activate 
+0

Danke für die Antwort. Du hast recht ich meinte 'Exec = uuxterm' (typo). Ich habe versucht, Ihre Lösung und es immer noch nicht funktioniert https://ibb.co/dVONAv – gh0st

+0

Der Grund, warum es das letzte Mal nicht funktioniert, weil exec Befehl Zitate nach '-e' fehlte. Die Arbeitssyntax sieht folgendermaßen aus: Exec = uxterm -e "bash --rcfile/home/user/py2-venv/bin/activate" '. Vielen Dank! – gh0st

Verwandte Themen