2016-08-02 29 views
-1

Wenn Bash-Terminal startet, möchte ich, dass es einige Aliase automatisch setzt, aber aus irgendeinem Grund nicht richtig funktionieren.Wie wird automatisch ein Alias ​​gesetzt, wenn bash in CentOS startet?

Ich habe eine Bash-Skript .bash_aliases genannt, und in meiner .bashrc Datei Ich habe den folgenden Code:

if [ -f .bash_aliases ]; then 
     echo "bash_aliases file is here" 
     ./.bash_aliases 
fi 

in der Datei .bash_aliases ich habe:

"creating alias for baaa" 
alias baaa='echo "baaa"' 

jetzt, wo ich das starten Terminal, sehe ich:

bash_aliases file is here 
creating alias for baaa 

Aber wenn ich versuche, die co mmand:

baaa 

Ich bekomme das?

bash: baaa: command not found... 

Wie macht das irgendeinen Sinn? Jedoch , wenn ich aus dem Terminal zu tun,

[<>@<> ~]$ alias baaa='echo "baaa"' 
[<>@<> ~]$ baaa 
baaa 

, die erwartet wird. Warum funktioniert es nicht, einen Alias ​​in .bash_aliases Datei zu setzen? Ich stellte sicher, dass die Datei ausführbar war: sudo chmod 777 .bash_aliases.

Ich benutze CentOS 7.

+0

Wissen Sie, was der 'source' Befehl macht? '.' ist ein Alias ​​für den Befehl' source'. –

+1

Es ist absolut nicht notwendig, die Datei ausführbar zu machen. (Und nimm ** überhaupt ** 'chmod 777' nicht, das jedem Account auf dem System Schreibzugriff gewährt; dies schließt das Einschließen von anonymen Accounts wie' nobody' ein, die unter anderem zum Sandboxing von nicht vertrauenswürdigem Authentifizierungscode verwendet werden). –

+0

Erlauben Sie nur genügend DAC-Berechtigungen für Dateien und Ordner. '777' lädt zu Ärger ein. Siehe [\ [this \]] (http://www.tldp.org/LDP/intro-linux/html/sect_03_04.html). – sjsam

Antwort

3

Interpunktion wichtig. Für Aliase hinzugefügt werden, müssen Sie Quelle das Skript zu definieren, sie in Ihrer aktuellen Shell ausführen:

# WORKS: source file named bash_aliases in the current directory 
. ./.bash_aliases  # POSIX-compliant syntax 

... auch geschrieben als ...

# WORKS: source file named bash_aliases in the current directory 
source ./.bash_aliases # bash-only syntax 

Wenn Sie stattdessen Folgendes tun:

# BROKEN: Run .bash_aliases as subprocess 
./.bash_aliases 

... es läuft als separates Skript, und die Ali Asse werden vergessen, wenn das Skript beendet wird.


By the way - da ein Skript Sourcing es in der aktuellen Shell liest, anstatt es als eigenständiges Programm ausgeführt wird, bedeutet dies, dass es nicht Dateiberechtigungen benötigt ausführbar zu sein. Daher benötigt Ihr .bash_aliases nicht und sollte keine +x Berechtigungen haben.