I file eseguibili in / bin e / usr / bin non si trovano nel percorso

1

In qualche modo non posso eseguire file in /bin o /usr/bin senza fornire il percorso completo.

Questo non accade quando si esegue da Terminal, ma, ad esempio, iTerm non può eseguire bash (solo /bin/bash ), OnyX non può eseguire sw_vers .

.profile: export PATH=/opt/local/bin:/opt/local/sbin:/bin:/usr/bin:$PATH 
.profile: export PATH=$PATH 
.bash_history: export PATH="$PATH:"'/Users/gilstrauss/Applications/CrossOver.app/Contents/SharedSuppor‌​t/CrossOver/bin' 
.bash_history: export PATH=/opt/local/bin:/opt/local/sbin:$PATH 
.bash_history: export PATH=${PATH}:/bin 
.bash_profile: export PATH=/bin:$PATH 
.bashrc: export PATH=${PATH}:/bin:/usr/bin
    
posta user49204 14.05.2012 - 17:00
fonte

4 risposte

3

Terminal.app l'avvio corretto della shell non significa molto: esegue /usr/bin/login (con il percorso completo) per impostazione predefinita, che richiama la shell predefinita (di nuovo: definita con un percorso completo ) come una shell di login interattiva (che a sua volta leggerà sia .profile che .bashrc e ti lascerà con un% di lavoro $PATH ). Il tuo problema è shell non interattive , che non eseguono alcuna impostazione $PATH . Ciò sembra indicare le impostazioni di percorso predefinite di OS X che in qualche modo sono state danneggiate.

Per verificare ciò, esegui cat /etc/paths . L'output dovrebbe (almeno) essere

/usr/bin
/bin
/usr/sbin
/sbin

(questi sono i valori predefiniti su un'installazione di OS X incontaminata). Se mancano i primi due, hai la tua causa - e una soluzione semplice:

mv /etc/paths /etc/paths.old # if you want to keep the current contents
def_paths=(/usr/bin /bin /usr/sbin /sbin)
for p in ${def_paths[@]}; do echo $p >> /etc/paths; done
cat /etc/paths.old >> /etc/paths # append previous contents

Tieni presente che siccome /etc/paths è di proprietà di root , dovrai lavorare su sudo su perché funzioni.

    
risposta data 14.05.2012 - 18:15
fonte
1

In OS X è avviato che imposta il percorso iniziale per tutto, non i tuoi file terminali.

Ora, su una nota non correlata, ho appena scoperto che in OS X

ps -E 

mostrerà l'ambiente che il processo è stato dato. Sono sicuro che tutti lo sapevano, tranne me, ma sono molto emozionato! Perché?

Perché ora posso fornire una risposta parziale.

ps -EA

Vi mostrerà l'ambiente in cui ogni processo è iniziato, indipendentemente dal fatto che tale processo abbia un terminale di controllo o meno. Dovresti vedere

/usr/bin:/bin:/usr/sbin:/sbin

Che cosa dovresti ottenere anche quando digiti

/bin/launchctl getenv PATH

dal momento che launchd imposta il percorso. È qui che si trova il tuo problema, lo sento, non nei tuoi dotfile. Potresti trovare utile leggere la pagina di manuale per environ(7) e path_helper(8) utili. Quando il sistema funziona correttamente, ogni app che esegui dovrebbe avere lo stesso ambiente fornito da launchd. Il fatto che Onyx stia funzionando male significa che non si tratta di un problema di shell, ma piuttosto di un sistema.

È molto importante che launchctl / launchd stia impostando correttamente il percorso.

    
risposta data 17.05.2013 - 09:40
fonte
1

Non sei sicuro di come sia successo ma il tuo PATH è andato in tilt, per fortuna è una soluzione facile. Eseguire il seguente comando in Terminale (o iTerm) per risolvere il problema:

echo "export PATH=$PATH:/bin:/usr/bin" >> ~/.bashrc
source ~/.bashrc

Questo aggiungerà /bin e /usr/bin alla fine del tuo PATH per questa e tutte le sessioni terminali future.

    
risposta data 14.05.2012 - 17:29
fonte
0

hai un .bash_profile ? nel mio

$ cat bash_profile 

source ~/.bashrc
export PATH=$PATH:/opt/local/bin:/opt/local/sbin

$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin:/usr/local/julia:/usr/local/MacGPG2/bin:/usr/texbin:/opt/local/bin:/opt/local/sbin

(per macports sul percorso). È ovvio che potresti semplicemente avere in .bash_profile la riga

export PATH=$PATH:/bin:/usr/bin

E guarda come va. La mia ipotesi è che devi aver fatto qualcosa di molto serio sulla tua macchina, quindi fare un backup dei tuoi file e testare il software e anche la solidità dell'hardware.

    
risposta data 14.05.2012 - 18:00
fonte

Leggi altre domande sui tag