2016-11-30 9 views
-2

In Linux-Mint 18, welche Dateien werden beim Start einer nicht interaktiven Shell gelesen?linux-mint nicht-interaktive Shell Start-Dateien

Ich versuche, einen Befehl via ssh auszuführen, wie ssh [email protected] coolcommand aber ich erhalte eine Fehlermeldung wie bash: coolcommand: command not found Die Datei coolcommand in /home/norio/bin/ sitzt, und ich die PATH Umgebungsvariable setzen dieses Verzeichnis in /home/norio/.bashrc enthalten und diese .bashrc wird so eingestellt, dass sie von /home/norio/.profile und /home/norio/.bash_profile bezogen wird. Es scheint jedoch, dass keine dieser Dateien gelesen wird, wenn die nicht interaktive Remote-Shell gestartet wird. Tatsächlich scheint /etc/profile keine dieser Dateien zu finden. Muss ich diese Datei bearbeiten? Oder gibt es eine andere Möglichkeit, einen Startprozess für die nicht-interaktive Shell als Nicht-Root-Benutzer einzurichten?

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) 
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). 

if [ "$PS1" ]; then 
    if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then 
    # The file bash.bashrc already sets the default PS1. 
    # PS1='\h:\w\$ ' 
    if [ -f /etc/bash.bashrc ]; then 
     . /etc/bash.bashrc 
    fi 
    else 
    if [ "`id -u`" -eq 0 ]; then 
     PS1='# ' 
    else 
     PS1='$ ' 
    fi 
    fi 
fi 

if [ -d /etc/profile.d ]; then 
    for i in /etc/profile.d/*.sh; do 
    if [ -r $i ]; then 
     . $i 
    fi 
    done 
    unset i 
fi 
+0

Fun Tatsache: 'coolcommand' ist nicht' bash', also hat es keine Arbeit mit '~/.bashrc' oder bash-bezogenen Dateien. –

+0

@IporSircer Dann welche Shell behandelt den Remote-Befehl von ssh übergeben? – norio

+0

Standardmäßig führt sshd 'bash' nach der Anmeldung aus, wenn Sie keinen Befehl angeben. Wenn Sie einen Befehl angeben, wird sshd ** anstelle von ** bash oder anderen Shells oder anderen Programmen ausgeführt. Du bekommst, was du willst: run 'coolcommand' –

Antwort

0

Von documentation:

Bash versucht zu bestimmen, wenn es mit seiner Standardeingabe mit einer Netzwerkverbindung ausgeführt wird, als wenn sie von dem Remote-Shell-Dämon ausgeführt, in der Regel rshd oder die sicheren Shell-Daemon sshd. Wenn Bash feststellt, dass es auf diese Weise ausgeführt wird, liest und führt es Befehle von ~/.bashrc aus, wenn diese Datei existiert und lesbar ist. Es wird dies nicht tun, wenn es als sh aufgerufen wird. Die Option --norc kann verwendet werden, um dieses Verhalten zu verhindern, und die Option --rcfile kann verwendet werden, um das Lesen einer anderen Datei zu erzwingen, aber weder rshd noch sshd rufen die Shell im Allgemeinen mit diesen Optionen auf oder erlauben deren Angabe.

Verwandte Themen