Unix-Pfad funktioniert nicht

1

Ich habe ein Paket s2cmdauf meinem Unix-Rechner installiert . Es funktioniert einwandfrei, wenn ich es von dem Ordner aus starte, in dem es sich befindet, aber es wurde nicht von einem anderen Speicherort aus gestartet. Daher habe ich den Pfad mit dem Befehl festgelegt, export PATH=$PATH:/opt/bitnami/S3Tools/s3cmd-1.5.0-alpha1dass sich eine Datei s3cmdin diesem Ordner befindet, die ausgeführt werden muss.

Das Problem ist jetzt, wenn ich a mache which s3cmd, bekomme ich den richtigen Pfad als Ausgabe, aber wenn ich es mit benutze, sagt sudo s3cmdes zum Beispiel command not found. Wenn ich den absoluten Pfad gebe und versuche, ihn auszuführen, läuft er von jedem Ort aus.

Was mache ich falsch?

EDIT: Ich habe gerade bemerkt, dass es 2 PATH-Variablen mit dem gleichen Pfad gibt. Verursacht das das Problem? Wenn ja, wie korrigiere ich das?

$ set | grep PATH
PATH=/opt/bitnami/rvm/bin:/opt/bitnami/memcached/bin:/opt/bitnami/varnish/bin:/opt/bitnami/redis/bin:/opt/bitnami/nodejs/bin:/opt/bitnami/mercurial/bin:/opt/bitnami/perl/bin:/opt/bitnami/git/bin:/opt/bitnami/nginx/sbin:/opt/bitnami/frameworks/laravel/app/Console:/opt/bitnami/frameworks/cakephp/app/Console:/opt/bitnami/frameworks/codeigniter/bin:/opt/bitnami/frameworks/symfony/bin:/opt/bitnami/frameworks/zendframework/app/Console:/opt/bitnami/sphinx/bin:/opt/bitnami/sqlite/bin:/opt/bitnami/apps/django/bin:/opt/bitnami/php/bin::/opt/bitnami/java/bin:/opt/bitnami/mysql/bin:/opt/bitnami/postgresql/bin:/opt/bitnami/apache2/bin:/opt/bitnami/python/bin:/opt/bitnami/subversion/bin:/opt/bitnami/ruby/bin:/opt/bitnami/common/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/bitnami/S3Tools/s3cmd-1.5.0-alpha1:/opt/bitnami/S3Tools/s3cmd-1.5.0-alpha1
_=PATH                                                                                                                                                                                 
    export PATH;                                                                                                                                                                       
            PATH="$2:$PATH"                                                                                                                                                            
            PATH="$PATH:$2"                                                                                                                                                            
        PATH="${rvm_user_path_prefix}:$PATH";                                                                                                                                          
    PATH="$(printf "%b" "$PATH"           | awk -v RS=: -v ORS=: '!($0 in a){a[$0];print}')";                                                                                          
    PATH="${PATH/%:/}";                                                                                                                                                                
    export PATH;                                                                                                                                                                       
    if printf "%b" "${PATH//:/ }" | GREP_OPTIONS="" \grep -vF "${rvm_bin_path}" > /dev/null 2>&1; then                                                                                 
                PATH="$PATH:${rvm_bin_path}"                                                                                                                                           
                PATH="${rvm_bin_path}:$PATH"                                                                                                                                           
        printf "%b" "export PATH ; PATH=\"${rvm_ruby_gem_home}/bin:${rvm_ruby_global_gems_path}/bin:${rvm_ruby_home}/bin:${rvm_bin_path}:\$PATH\"\n" > "$file_name";                   
        for variable in rvm_env_string rvm_path rvm_ruby_string rvm_gemset_name RUBY_VERSION GEM_HOME GEM_PATH MY_RUBY_HOME IRBRC MAGLEV_HOME RBXOPT;                                  
    export PATH;                                                                                                                                                                       
            \awk '/PATH/' < "$actual_file";                                                                                                                                            
            rvm_error "Neither md5 nor md5sum were found in the PATH";                                                                                                                 
            rvm_error "Neither md5 nor md5sum were found in the PATH";                                                                                                                 
    export PATH;                                                                                                                                                                       
    PATH=":$PATH:";                                                                                                                                                                    
    PATH="${PATH//:$1:/:}";                                                                                                                                                            
    PATH="${PATH//::/:}";                                                                                                                                                              
    PATH="${PATH%:}";                                                                                                                                                                  
    PATH="${PATH#:}"                                                                                                                                                                   
    PATH="$(printf "%b" "$PATH"           | awk -v RS=: -v ORS=: "/${rvm_path//\//\/}/ {next} {print}")";                                                                              
    PATH="${PATH/%:/}";                                                                                                                                                                
    export PATH;                                                                                                                                                                       
    export GEM_HOME GEM_PATH MY_RUBY_HOME RUBY_VERSION IRBRC;                                                                                                                          
                rvm_error "Neither sha256sum nor shasum found in the PATH";                                                                                                            
                rvm_error "Neither sha256sum nor shasum found in the PATH";                                                                                                            
        export GEM_HOME GEM_PATH MY_RUBY_HOME RUBY_VERSION IRBRC;                                                                                                                      
        GEM_PATH="$rvm_ruby_gem_path";                                                                                                                                                 
        unset BUNDLE_PATH;                                                                                                                                                             
            GEM_PATH="$GEM_PATH:$MAGLEV_HOME/lib/maglev/gems/1.8/";                                                                                                                    
            new_path="$GEM_HOME/bin:$rvm_ruby_global_gems_path/bin:$MY_RUBY_HOME/bin:${rvm_bin_path}:$(__rvm_remove_rvm_from_path ;printf "%b" "$PATH")";                              
            new_path="$GEM_HOME/bin:$MY_RUBY_HOME/bin:${rvm_bin_path}:$(__rvm_remove_rvm_from_path ;printf "%b" "$PATH")";                                                             
        export PATH="$new_path";                                                                                                                                                       
    unset GEM_HOME GEM_PATH MY_RUBY_HOME RUBY_VERSION IRBRC;                                                                                                                           
    new_path="$(__rvm_remove_rvm_from_path ; printf "%b" "$PATH"):${rvm_bin_path}";                                                                                                    
    new_path="$PATH:${rvm_bin_path}";                                                                                                                                                  
    COMPREPLY=($( eval PATH="$PATH:/sbin" $cmd 2>/dev/null |         awk '/^[^ \t]/ { print $1 }' ));                                                                                  
    if [[ -z "${CDPATH:-}" || "$cur" == ?(.)?(.)/* ]]; then                                                                                                                            
    for i in ${CDPATH//:/'                                                                                                                                                             
    if [ "${INFOPATH: -1:1}" == ':' ]; then                                                                                                                                            
        infopath=${INFOPATH}${infopath};                                                                                                                                               
        if [ ${INFOPATH:+set} ]; then                                                                                                                                                  
            infopath=$INFOPATH;                                                                                                                                                        
    COMPREPLY=($( compgen -W "$( PATH="$PATH:/sbin" lsmod |         awk '{if (NR != 1) print $1}' )" -- "$1" ))                                                                        
    [ -z "$classpath" ] && classpath=$CLASSPATH;                                                                                                                                       
    local PATH="$PATH:/sbin:/usr/sbin";                                                                                                                                                
        manpath=$MANPATH;                                                                                                                                                              
    COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W         "$( PATH="$PATH:/sbin" lspci -n | awk '{print $3}')" -- "$cur" ))                                                               
    local PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin;                                                                                                                                  
    COMPREPLY=("${COMPREPLY[@]}" $( compgen -W         "$( PATH="$PATH:/sbin" ifconfig -a |         sed -ne 's/.*addr:\([^[:space:]]*\).*/\1/p'             -ne 's/.*inet[[:space:]]\{1,\}\([^[:space:]]*\).*/\1/p' )"         -- "$cur" ))
    COMPREPLY=($( compgen -W         "$( PATH="$PATH:/sbin" sysctl -N -a 2>/dev/null )" -- "$cur" ));                                                                                  
    COMPREPLY=(${COMPREPLY[@]:-} $( compgen -W         "$( PATH="$PATH:/sbin" lsusb | awk '{print $6}' )" -- "$cur" ))                                                                 
                        GEM_PATH="$rvm_ruby_gem_home:$rvm_ruby_gem_home${rvm_gemset_separator:-"@"}global";                                                                            
                        export rvm_ruby_gem_home GEM_HOME GEM_PATH;  
RedGrittyBrick
quelle
1
Wenn Sie sudo aufrufen, wird der PFAD normalerweise nicht zurückgesetzt. Es ist jedoch möglich, eine Option festzulegen, die diese zurücksetzt. Überprüfen Sie, ob env_resetin der sudoersDatei festgelegt ist.
William Pursell
Sie müssen uns ein Beispiel für '2 PATH-Variablen mit demselben Pfad' geben. Bearbeiten Sie Ihre Frage, um die Ausgabe von einzuschließen set | grep PATH. Viel Glück.
Shellter
Beachten Sie, dass abhängig von der Kompilierung env_resetmöglicherweise ein Zurücksetzen durchgeführt PATHwird sudo.
William Pursell
Wenn Sie vorhaben , über Shell - builtin Befehle zu sprechen , wie set, müssen Sie sagen , was Shell Sie verwenden (zB bash, csh, ksh, zsh, etc.) Es sieht aus wie du bist eine Shell läuft , wo die setBefehlsausgänge alle Variablen und Shell Funktionen –– Sie erhalten also jede Zeile von jeder Shell-Funktion, die den String enthält PATH, einschließlich einiger, die PATH setzen. Das ist ein roter Hering. Wenn Sie misstrauen echo "$PATH", versuchen Sie es env | grep "^PATH=".
Scott
Sie sagen : „Es funktioniert gut , wenn ich es aus dem Ordner führen Sie es in sich befindet.“ Sie meinen doch mit sudo? Was passiert, wenn Sie es ohne ausführen sudo? ... wenn Sie es ohne sudoaus einem anderen Verzeichnis ausführen ? (Wenn Sie einen Berechtigungsfehler erhalten, die bestätigt , dass Sie PATH richtig eingestellt, wenn Sie eine „nicht gefunden“ Fehlermeldung erhalten, das zeigt , dass Sie nicht.) Können Sie tun sudo sh, sudo bash, sudo -s, oder gleichwertig? Wenn ja, das tun und dann wiederholen Sie die anderen Schritte ( s3cmd, which s3cmd, echo "$PATH"). Wenn Ihre PATHVariable durch eine Standardvariable ersetzt wurde, gehen Sie zurück und versuchen Sie sudo -E, die Umgebung zu schonen.
Scott