Bonjour, j'essaye de traduire mon .bashrc au format fish presque terminé, la plupart du temps est clair sur la documentation mais cette partie me donne mal à la tête .. c'est donc mon gnupg fonctionne avec mon yubikey ssh etc. etc. La version fish est la dernière 3.0 sous Arch GNU / Linux
original sur BASH:
~/.config/fish/config.fish (line 33): ${ is not a valid variable in fish. if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ] ^ from sourcing file ~/.config/fish/config.fish called during startup
Mine à moitié convertie en poisson:
set -e SSH_AGENT_PID if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ] set -x SSH_AUTH_SOCK="/run/user/$UID/gnupg/S.gpg-agent.ssh" end echo "UPDATESTARTUPTTY" | gpg-connect-agent > /dev/null 2>&1
3 Réponses :
Puisque $ {var: -value}
se développe en valeur
si $ var
est vide, vous pouvez toujours le remplacer en écrivant votre code sur le long chemin:
begin if test -n "$gnupg_SSH_AUTH_SOCK_by" set result "$gnupg_SSH_AUTH_SOCK_by" else set result 0 end if [ "$result" -ne %self ] set -x SSH_AUTH_SOCK "/run/user/$UID/gnupg/S.gpg-agent.ssh" end set -e result end
Notez que je n'utilise pas (a) approuver, (b) tolérer l'utilisation de, ou (c) ne pas avoir de préjugés injustifiés contre les utilisateurs de poisson. Ainsi, mon conseil est très suspect, et il est probable qu'il existe de bien meilleures façons de le faire.
Vous ne devriez pas changer votre shell de connexion tant que vous n'avez pas une bien meilleure compréhension de la syntaxe et du comportement des poissons. Par exemple, dans le poisson, l'équivalent de $$
est % self
ou $ fish_pid
selon la version de poisson que vous utilisez. Vous devez toujours spécifier la version du programme avec laquelle vous rencontrez des problèmes.
En supposant que vous utilisez fish 2.x qui serait écrit comme
if not set -q gnupg_SSH_AUTH_SOCK_by or test $gnupg_SSH_AUTH_SOCK_by -ne %self set -gx SSH_AUTH_SOCK "/run/user/$UID/gnupg/S.gpg-agent.ssh" end
Notez également qu'il n'y a pas de signe égal entre le nom et la valeur de la var dans le set -x
.
J'utilise le dernier sur arch donc 3.0 mais je suppose que c'est rétrocompatible?
J'ai tout fonctionne, merci! <3 note que j'ai dû créer une variable $ UID car fish ne vous donne pas cela, donc créé un ensemble UID (id -u)
J'avais une question similaire, liée aux variables XDG_ *.
set -U XDG_CACHE_HOME ~/.cache set -U XDG_CONFIG_HOME ~/.config set -U XDG_DATA_HOME ~/.local/share
Ce que j'ai trouvé comme la meilleure alternative est de simplement définir les variables universelles une fois pour les valeurs par défaut--
XXX
Ensuite, dans le (s) fichier (s) de configuration de poisson ou les scripts, utilisez simplement "$ XDG_CONFIG_HOME" / ...
. La valeur d'une variable d'environnement exportée remplacera la variable universelle si elle est définie, sinon la variable universelle est là comme valeur par défaut / de secours. Si la variable universelle est utilisée, elle n'est pas exportée vers les processus enfants, alors qu'une variable d'environnement exportée l'est, qui fournit l'équivalent complet du développement des paramètres bash | zsh.
Ma question similaire était fermé comme un double de celui-ci, j'ai donc pensé partager mes résultats ici, même si ma réponse ne correspond pas directement à la question exacte posée.
Une bonne question concerne un problème spécifique étroit - alors "comment puis-je traduire programme-X en langage-Y?" est une mauvaise question, mais "quel est le moyen en langage Y d'écrire thing-X sans déclencher error-Z?" peut être une bonne. J'ai édité le titre pour le réduire de manière appropriée.
Spécifiez toujours la version des programmes que vous utilisez. Dans ce cas, le poisson 3.0 a été récemment publié, ce qui présente quelques différences pertinentes par rapport à votre question par rapport au poisson 2.x.
c'est 3.0 J'ai édité la question désolé.