Um einen bestimmten Befehl auszuführen, muss ich verwenden
sudo -h -u someuser <somecommand>
um die Vernunft zu bewahren, habe ich einen Alias erstellt
alias somecommand='function _dm(){ sudo -u ubuntu somecommand $@; };_dm'
Das funktioniert großartig, bis ich versuche, etwas Ausgefallenes zu machen.
somecommand arg1 | xargs somecommand arg2
Das bereitet mir Probleme, da xargs den Alias nicht aufruft. Ist es möglich, das irgendwie zum Laufen zu bringen?
Antwort1
Solange Ihr Alias in Ihrem ist
.bashrc
, sollten Sie in der Lage sein,...|xargs bash -c somealias ...
Einfacher ist es, Ihren Alias stattdessen in ein Shell-Skript einzufügen. Erstellen Sie
~/bin
, fügen Sie es zu Ihrem hinzuPATH
, fügen Sie das Skript ein und Ihr ursprünglicher Befehl wird funktionieren.
Beispiel-Shell-Skript:
#!/bin/bash
sudo -u ubuntu somecommand "$@"
Bearbeiten:diese Antwortschlägt vor, Nr. 1 mit bash -ic
statt zu versuchen bash -c
.