Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

[BASH] Bereik van alias

PeBo
9 antwoorden
  • Ik zit wat te fröbelen met een (zelfbedachte) "wrapper" rond ssh. Die "wrapper" zit (zeg) in ssh-alias. In /etc/profile.d/ssh.sh (dat vanzelf wordt "aangeroepen" door /etc/profile) heb ik gestopt:[code:1:8029d97f4c]alias ssh='ssh-alias'[/code:1:8029d97f4c]Dat werkt zoals ik gehoopt had, mits ik ssh vanaf de command line (in BASH) aanroep. Roep ik ssh namelijk aan vanaf "Run Application"(GNOME) of de MiniCli (KDE) - zeg maar: met Alt+F2 - dan wordt deze alias genegeerd. Zelfde probleem treedt op als ik (zelfs in BASH) een programma aanroep dat op zijn beurt ssh aanroept (denk: vncviewer -via …).

    Klopt het dat een alias alleen werkt vanaf de command line (in BASH)? Zo ja, wat is daarvoor een workaround?
  • Hoe dat bij Gnome werkt weet ik niet, maar bij KDE is dhe gebruikte shell in minicli geen Bash, maar kdeinit.

    Hierdoor werkt de alias niet denk ik.

    Max
  • Ik weet niet of het slim is om een alias te maken voor een zo 'normale' en veelgebruikte lettercombinatie: cp, ls, vi, top, ssh zijn toch commando's waarbij je een zeker gedrag verwacht.

    Kan je wat je wil bereiken niet via de ssh_config file in /etc/ssh of ~/.ssh? Ik bespaar sinds kort veel typewerk door de mogelijkheden van deze file te hebben bestudeerd.

    Ik kan niet precies uitleggen hoe het nou zit, maar je hebt een login en een non-login shell. Voor de twee types, kun je veschillende config-files gebruiken. De ene file is ~/.bashrc en de andere ~/.bash_profile. Ik neem aan dat /etc/profile de systemwide .bash_profile is (/etc/profile wordt door meer Bourne shells gebruikt).

    Als ik het allemaal goed begrijp, is de profile file voor een login shell. Het opstarten van een programma in een desktop of via vnc doorloop je niet het gewone login proces en wordt de configuratie die jij hebt gemaakt niet ingelezen.

    Probeer eens de verschillende locaties waar je bash config kunt plegen. Log wel steeds opnieuw uit en in om er voor te zorgen dat alles goed wordt geset.
  • Aliases werken sowieso alleen in de shell.

    Dus als minicli een shell aanroept om een commando uit te voeren kun je de alias in een opstartbestand zetten dat door de shell wordt gelezen.

    Klein probleempje is dat een shell normaliter alleen zijn opstartbestanden (/etc/profile etc.) leest als hij interactief wordt opgestart. Dit kun je echter veranderen als je de omgevingsvariabele BASH_ENV instelt op een bestand dat je ook non-interactief geladen wilt hebben, bijvoorbeeld [b:092699160a]/etc/bashrc-non-interactive[/b:092699160a]. In dat bestand kun je functies of aliasen definiëren. Met de shell optie expand_aliases kun je regelen dat aliases ook worden geëxpandeerd in non-interactieve modus. Zie man bash.

    Maar het blijft zo dat als minicli enz. de shell niet gebruiken maar zelf de commandoregel parsen, dat aliases en functies dan niet werken. In dat geval kun je beter een klein scriptje ergens in je PATH neerzetten met de gewenste functionaliteit.
  • Log je grafisch in? Dus via KDM, GDM, etc.

    Dan kun je wel degelijk een werkende alias maken afair door de alias op te nemen in .xsession
    Deze file wordt bij grafische logins als vervanger voor .bashrc of andere bash config files gebruikt.
  • Dank voor alle antwoorden (dus niet alleen robian)[quote:996003c50f="robian"]Ik weet niet of het slim is om een alias te maken voor een zo 'normale' en veelgebruikte lettercombinatie: cp, ls, vi, top, ssh zijn toch commando's waarbij je een zeker gedrag verwacht.

    Kan je wat je wil bereiken niet via de ssh_config file in /etc/ssh of ~/.ssh? Ik bespaar sinds kort veel typewerk door de mogelijkheden van deze file te hebben bestudeerd.[/quote:996003c50f]Ik heb geprobeerd de "wrapper" transparant te houden, die "wrapper" roept als het goed is - ik ben niet zo'n script talent - uiteindelijk altijd /usr/bin/ssh aan met alle opties waarmee ssh was aangeroepen.

    Wat ik probeerde (en wat lijkt te zijn gelukt, zie volgende post): indien nodig ssh-add te draaien voordat ik ssh aanroep. Dan hoef ik per sessie hoogstens één keer mijn "passphrase" in te typen, en wel zonder dat ooit voor niets te doen. Het lijkt gelukt: als ik nu ssh aanroep zit mijn "identity" in elk geval in de "ssh-agent" en hoef ik nooit meer een password in te typen om in te loggen (een en ander wordt, nu ik mijn "passphrase" namelijk heb getypt, afgehandeld door ssh-agent).

    Ik hoop maar dat ik het wiel niet opnieuw heb uitgevonden …
  • En de hoofdprijs is voor:[quote:94aad16f73="wbsoft"]In dat geval kun je beter een klein scriptje ergens in je PATH neerzetten met de gewenste functionaliteit.[/quote:94aad16f73]Inderdaad. Het is /usr/bin/ssh, maar /usr/local/bin wordt eerder genoemd in mijn $PATH. Oplossing dus: mijn "wrapper" opslaan als /usr/local/bin/ssh en alle programma's die ssh aanroepen moeten (als ik het goed zie) eerst langs mijn "wrapper". Het alias heb ik dan helemaal niet meer nodig (sterker: dat zit dan in de weg …)

    Motto: fröbelen kan met GNU/Linux erg leuk zijn!
  • [quote:b2c2f3970d="PeBo"]En de hoofdprijs is voor:[quote:b2c2f3970d="wbsoft"]In dat geval kun je beter een klein scriptje ergens in je PATH neerzetten met de gewenste functionaliteit.[/quote:b2c2f3970d]Inderdaad. Het is /usr/bin/ssh, maar /usr/local/bin wordt eerder genoemd in mijn $PATH. Oplossing dus: mijn "wrapper" opslaan als /usr/local/bin/ssh en alle programma's die ssh aanroepen moeten (als ik het goed zie) eerst langs mijn "wrapper". Het alias heb ik dan helemaal niet meer nodig (sterker: dat zit dan in de weg …)

    Motto: fröbelen kan met GNU/Linux erg leuk zijn![/quote:b2c2f3970d]

    je loopt zo alleen het risico dat programma's die afhankelijk zijn van ssh (of het weet-ik-waarvoor nodig hebben) f*cked up raken.
    More important!!! andere users die op die manier wellicht minder prettige dingen kunnen doen. (remedie: chmod 700 /usr/local/bin/ssh)

    een betere oplossing lijkt mij om in je homedir een directory bin aan te maken, daar al je 'personalized' scripts in zetten en die dir. voorin je PATH op te nemen
  • [quote:902fdd3a86="Mithrandir"]een betere oplossing lijkt mij om in je homedir een directory bin aan te maken, daar al je 'personalized' scripts in zetten en die dir. voorin je PATH op te nemen[/quote:902fdd3a86]Yep! Dat had ik ook eigenlijk willen schrijven.

    Ik heb zoiets in mijn /etc/profile:
    [code:1:902fdd3a86]if test -d "${HOME}/bin" ; then
    export PATH="${HOME}/bin:${PATH}"
    fi[/code:1:902fdd3a86]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.