Je veux créer un fichier . Desktop, qui ouvre un terminal avec une invite, qui affiche l'heure actuelle et le répertoire de travail actuel en couleur verte. J'ai réalisé cela via la commande:
$ PS1="\033[0;32m(\$(date +%H:%M:%S)) \W$ \033[0m"
donne cette invite:
(14:30:12) media$
Pour cette commande, j'ai créé le fichier . Desktop suivant:
[Desktop Entry]
Version=1.0
Name=Open Terminal
Comment=Open Terminal with modified Prompt
Exec=bash -c 'export PS1="\033[0;32m(\$(date +%H:%M:%S)) \W$ \033[0m";$Shell'
Icon=utilities-terminal
Terminal=true
Type=Application
Categories=Application;
Je pense que je fais quelque chose de mal en passant la variable, mais je ne sais pas quoi exactement, pouvez-vous m'aider à trouver quel est le problème?
La raison de cela gagne plusieurs .desktop
fichiers avec lesquels je peux ouvrir différents terminaux avec différentes invites.
Cela fonctionne, mais peut être une solution moins adoptée.
Dépannage
D'après mon observation, il y a deux problèmes: $Shell
est appelé après export PS1
commande et les invites de couleur bash ne sont pas correctement codées
Fonctionnement $Shell
créera une nouvelle invite. Cela a causé quoi que ce soit fait avant, c'est-à-dire export PS1
devient inutile, car la nouvelle invite remplacera les précédentes.
Un autre problème est probablement quelques fautes de frappe. Je n'ai trouvé aucune raison de quitter le crochet carré unilatéral [
en cours d'ouverture.
Ce HOWTO a noté qu'il devrait être joint.
Comme mentionné précédemment, les séquences d'échappement non imprimables doivent être incluses entre
\[\033[
et\]
. Pour les séquences d'échappement de couleur, elles doivent également être suivies d'un minusculem
.
Solution de contournement
Utilisez un .bashrc
fichier par différent PS1
configuration. Ensuite, exécutez bash
qui appelle un autre bash
avec --init-file
option pour exécuter Prompt en utilisant le .bashrc
fichier.
Suivez les étapes ci-dessous.
Créez un fichier vide avec un nom différent, c'est-à-dire .bashrc2
dans Accueil répertoire.
Ouvrez le fichier dans un éditeur de texte, copiez et collez ce qui suit (révisé).
export PS1="\[\033[0;32m\](\$(date +%H:%M:%S)) \W$ \[\033[0m\]"
Enregistrez et fermez le fichier.
Créez un autre fichier vide avec un nom différent, c'est-à-dire shortcut2.desktop
sur le bureau .
Ouvrez le fichier dans un éditeur de texte, copiez et collez ce qui suit.
[Desktop Entry]
Version=1.0
Name=Terminal 2
Comment=Open Terminal with .bashrc2
Exec=bash -c 'bash --init-file $HOME/.bashrc2'
Icon=utilities-terminal
Terminal=true
Type=Application
Categories=Application;
Enregistrez et fermez le fichier.
Enfin, double-cliquez sur le raccourci (apparaît maintenant sous la forme Terminal 2 sur Bureau ) pour exécuter l'invite.
Répétez les étapes pour les autres configurations, le cas échéant, en donnant des noms différents, c'est-à-dire .bashrc3
, shortcut3.desktop
et autres choses de ce genre.
L'inexpliqué
Fonctionnement bash --init-file $HOME/.bashrc2
seul ne pourra pas inclure le PS1
configuration. L'invite résultante sera décolorée et retombera sur [\u@\h:\w]$
format. En d'autres termes, le .bashrc2
le fichier est entièrement ignoré. C'est pourquoi le Shell imbriqué est requis.