#1 Le 07/09/2015, à 15:52
- slash-z
[résolu]: changer le répertoire courant du shell père en sortie de mc
Salut,
Je cherche à rétablir un comportement de midnight commander auquel j'étais habitué sous la distribution que j'utilisais précédemment (mandriva 2008, eh oui je sais ça date un peu).
Il s'agit de faire en sorte qu'après avoir quitté mc, on se retrouve dans le dernier répertoire consulté. Ce que je trouvais bien pratique mais que je n'arrive pas à faire fonctionner jusqu'ici sous kubuntu 14.04
Une fois installé midnight commander qui n'est pas installé d'office, faisons donc un man mc pour voir et intéressons nous à l'option -P:
-P file, --printwd=file
Print the last working directory to the specified file. This option is not meant to be used directly. Instead, it's used from a special shell script that automati‐
cally changes the current directory of the shell to the last directory the Midnight Commander was in. Source the file /usr/lib/mc/mc.sh (bash and zsh users) or
/usr/lib/mc.csh (tcsh users) respectively to define mc as an alias to the appropriate shell script.
Voici le code de /usr/lib/mc/mc.sh
# Don't define aliases in plain Bourne shell
[ -n "${BASH_VERSION}${KSH_VERSION}${ZSH_VERSION}" ] || return 0
alias mc='. /usr/lib/mc/mc-wrapper.sh'
OK, il crée un alias sur /usr/lib/mc/mc-wrapper.sh
Pour faire mes tests proprement , j'ai donc copié le script "/usr/lib/mc/mc-wrapper.sh" dans mon répertoire perso et je l'ai renommé MC.sh pour éviter les confusions.
J'ai ensuite rajouté dans le code un echo à un endroit stratégique, voici le code du script modifié:
MC_USER=`id | sed 's/[^(]*(//;s/).*//'`
MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$"
/usr/bin/mc -P "$MC_PWD_FILE" "$@"
if test -r "$MC_PWD_FILE"; then
MC_PWD="`cat "$MC_PWD_FILE"`"
if test -n "$MC_PWD" && test -d "$MC_PWD"; then
cd "$MC_PWD"
echo "je suis ici: `pwd`"
fi
unset MC_PWD
fi
rm -f "$MC_PWD_FILE"
unset MC_PWD_FILE
Et ça marche, le script m'affiche bien en sortie de mc le nouveau répertoire courant comme attendu, confirmation que le cd à l'intérieur fonctionne bien.
Mais dans la console, rien n'a bougé, je suis toujours dans le répertoire d'origine avant lancement de mc. Ce qui peut-être logique, l'environnement du père ne peut être modifié par le fils. OK.
Seulement ça ne m'arrange pas ! Et ce n'est vraisemblablement ni le comportement du shell vis à la vis de la commande "cd" sous ma distrib précédente (je n'y avais jamais prêté attention), ni ce qu'avaient prévu les développeurs de midnight commander.
Là je cale un peu. Une idée serait bienvenue.
--------------------
Par ailleurs autre problème idiot, il semble qu'il me manque plein de pages de manuel relatives aux commandes de base en shell.
Par exemple un bête "man cd" me sort un "no manual entry". Etonnant non ?
Et je ne trouve pas quel est le paquet "manpages" à installer avec Muon (je suis désolé, je n'ai pas encore pris le temps de me pencher sur l'utilisation de la commande apt)
Dernière modification par slash-z (Le 08/09/2015, à 07:40)
Hors ligne
#2 Le 07/09/2015, à 23:15
- slash-z
Re : [résolu]: changer le répertoire courant du shell père en sortie de mc
OK, j'ai trouvé ma réponse pour le premier point concernant mc.
L'importance de l'alias et le fait que cet alias soit en fait une commande d'inclusion m'avaient échappés.
Ce qui explique aussi le fait que ce script qui n'en est pas réellement un du coup, "wrapper" avait une gueule bizarre avec son absence d'entête.
--------------
Pour ce qui est des pages de manuel manquantes, je n'ai toujours pas trouvé dans quel paquet elles se trouvent.
Ce serait sympa de m'aider. Eventuellement....
Hors ligne
#3 Le 07/09/2015, à 23:51
- MicP
Re : [résolu]: changer le répertoire courant du shell père en sortie de mc
Non non, il ne manque aucune page man, c'est simplement une question de contexte : l'interpréteur de commandes.
man builtins
=======
http://www.tldp.org/LDP/abs/html/internal.html
http://www.tldp.org/LDP/abs/html/
http://www.tldp.org/guides.html
http://wiki.bash-hackers.org/doku.php
Dernière modification par MicP (Le 08/09/2015, à 00:04)
Hors ligne
#4 Le 08/09/2015, à 00:14
- slash-z
Re : [résolu]: changer le répertoire courant du shell père en sortie de mc
OK super merci à toi !
Par contre, c'est pas d'une très grande lisibilité du coup comparé à une manpage habituelle.
Désolé pour certaines de mes questions qui doivent paraître anachroniques lol
Hors ligne
#5 Le 08/09/2015, à 02:52
- MicP
Re : [résolu]: changer le répertoire courant du shell père en sortie de mc
(Je suis avec debian 8.2)
=======
Pour la sortie dans le répertoire correspondant au panneau en cours de Midnight Commander
il suffit de créer un alias dans ton fichier ~/.bash_aliases (voir http://doc.ubuntu-fr.org/alias)
(si le fichier ~/.bash_aliases n'existait pas, il faudra le créer)
alias mc='. /usr/share/mc/bin/mc-wrapper.sh'
=======
NOTE : Le point est un équivalent à la commande source (que tu retrouve au début de la page man des builtins du bash)
. /usr/share/mc/bin/mc-wrapper.sh
est donc équivalent à :
source /usr/share/mc/bin/mc-wrapper.sh
=======
Il y a une aide accessible depuis Midnight Commander, mais il faudrait pouvoir désactiver les touches raccourcis de l'émulateur de terminal (F1, F10, etc), et de l'interface graphique.
Ce problème ne se pose pas dans le cas d'un terminal en mode texte (sans le serveur X) accessibles par Ctr+Alt+F1 (à F6) (retour sous X avec Alt-F7)
=======
Pour plus de lisibilité des manPages , j'ajoute ce qui suit dans mon fichier ~/.bashrc
# =============
# Si la commande "man" est appelée,
# la commande "env" va être appelée juste avant
# pour pouvoir prendre en compte les variables
# qui vont colorer l'affichage de certains mots
# Ensuite seulement la commande "man" sera exécutée.
# Voir les "ANSI Escape sequences", "termcap", "groff"…
man() {
env \
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
LESS_TERMCAP_md=$(printf "\e[1;31m") \
LESS_TERMCAP_me=$(printf "\e[0m") \
LESS_TERMCAP_se=$(printf "\e[0m") \
LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
LESS_TERMCAP_ue=$(printf "\e[0m") \
LESS_TERMCAP_us=$(printf "\e[1;32m") \
man "$@"
}
Pour bien faire, il faudrait d'abord faire un test pour vérifier qu'on est bien dans un terminal capable d'afficher des couleurs.
Dernière modification par MicP (Le 08/09/2015, à 05:58)
Hors ligne
#6 Le 08/09/2015, à 07:39
- slash-z
Re : [résolu]: changer le répertoire courant du shell père en sortie de mc
Euh oui merci. J'avais trouvé, voir plus haut. Désolé, c'était peut-être pas assez clair.
Hors ligne
#7 Le 08/09/2015, à 07:45
- MicP
Re : [résolu]: changer le répertoire courant du shell père en sortie de mc
J'étais justement en train de m'en rendre compte, et finalement, c'est plutôt moi qui suis un peu perturbé par des soucis perso de santé, du coup, je n'avais pas assez bien lu ton premier message.
Hors ligne
#8 Le 08/09/2015, à 07:54
- slash-z
Re : [résolu]: changer le répertoire courant du shell père en sortie de mc
Pas grave Mic. Bon rétablissement alors !
Hors ligne
#9 Le 08/09/2015, à 07:56
- MicP
Re : [résolu]: changer le répertoire courant du shell père en sortie de mc
Merci.
Dernière modification par MicP (Le 08/09/2015, à 07:56)
Hors ligne