2014-02-06 14 views
1

當我每個Putty登錄Linux服務器時,我想執行bash(因爲默認shell是另一個),然後添加一個別名。在登錄時執行bash並添加別名

我嘗試了幾種組合,將exec bash放入.profile,並將alias foo='echo foo'加入.bash_profile。但我沒有找到正確的組合。要麼沒有設置別名,要麼沒有執行bash。

所以,問題是,在這些文件中:

.profile 
.bashrc 
.bash_profile 

我必須把這些命令:

exec bash 
alias foo='echo foo' 

運行bash外殼,並已獲得別名每次我我是否登錄服務器?

編輯:我們使用所有相同的用戶登錄。但是我想執行bash並只爲我的遠程機器添加別名。我已經有一個合適的if聲明。我只需要知道,把這些命令放在哪裏!

EDIT2

我有什麼在我的.profile至今:

if [ $(who -m | awk '{print $NF}' | grep "myHostName" | wc -l) -eq 1 ] 
then 
    exec bash 
    alias foo='echo foo' 
fi 

這將執行的bash只用戶。但別名將被忽略,因爲我開始一個新的外殼和別名將可能設置在舊的外殼...

回答

3

要走出去的一個肢體,並猜測你想這樣做,因爲你的默認shell不是bash。別。只要改變默認的shell

> chsh -s /bin/bash 

然後把

alias foo='echo foo' 

在任一~/.bashrc~/.bash_profile

如果多個用戶使用同一個帳戶,你可以嘗試做如下。登錄時,運行

> who -a | grep $(ps -p $PPID -o ppid=) | awk '{print $NF}' 

這可能是系統的依賴,但一對夫婦我試了一下,這將讓你從登錄的位置。一旦你的輸出,請執行下列操作

if [[ $(who -a | grep $(ps -p $PPID -o ppid=) | awk '{print $NF}') == output ]]; then 
    alias foo='echo foo' 
done 

如果你的ssh-ING從多臺計算機的話,我不認爲有什麼辦法可以做你想做的。最簡單的做法是在主目錄中創建自己的文件,然後在每次登錄時手動採用該文件。

例如,

> touch myfile.txt 
> echo "alias foo='echo foo'" >> myfile.txt 
> source myfile.txt 
> foo 
foo 

所以你只需要在每次登錄或只是在默認情況下膩子源它時運行source myfile.txt

+0

難道也可以做'CHSH -s /斌/ bash'在配置文件中,所以我可以只在特定條件下執行它(例如遠程主機是'myHost')?因爲我在服務器上運行,我不是唯一的服務器,我不想更改其他用戶的行爲! – bobbel

+0

@bobel每個用戶都有他自己的默認shell(存儲在'/ etc/passwd /'中的信息),不會爲其他人改變它。 – BroSlow

+0

好吧,對不起,我沒有很好地解釋我自己......我們都使用相同的用戶在這臺服務器上登錄:) – bobbel

1

好吧,終於我自己想出了BroSlow的大力幫助。

我寫了下面我.profile

if [ $(who -m | awk '{print $NF}' | grep "myHostName" | wc -l) -eq 1 ] 
then 
    exec bash 
fi 

,另一部分爲.bash_profile

if [ $(who -m | awk '{print $NF}' | grep "myHostName" | wc -l) -eq 1 ] 
then 
    alias foo='echo foo' 
fi 

這解決了我的問題!

登錄時,.profile將自動採購並執行bash。 之後.bash_profile將由於這個事實而來源,即bash外殼將源自它的自己的配置文件。

但是:非常感謝支持!

+1

'如果誰-m | awk'{print $ NF}'| grep -q「myHostName」;然後'會檢查是否有任何匹配,而不需要對行進行計數並將結果與​​1進行比較。 – chepner

+0

好點,謝謝! :) – bobbel

0

要設置在啓動別名改變你的.bash_profile 添加別名慶典簡介:

$ cd 
$ sudo nano .bash_profile 
$ alias ALIAS_NAME='COMMAND' 

更新bash的輪廓

$ source ~/.bash_profile