A system deletes my .bashrc file

 
Thread Tools Search this Thread
Operating Systems OS X (Apple) A system deletes my .bashrc file
# 1  
Old 07-09-2016
A system deletes my .bashrc file

It deletes my .bashrc file rarely but predictability after some unknown count of Mac's restarts. Has someone ever faced such behavior?

How do I prevent OS X from modifying .bashrc? What ownership/permission should I set up to not let it happen?

OS X Lion.
# 2  
Old 07-09-2016
I assume you meant predictably instead of predictability... What happens that enables you to predict that your .bashrc file will be deleted the next time you reboot OS X? Is it that if you perform some specific action, the file will disappear the next time you reboot? If so, what actions do you perform before the reboot that makes your .bashrc disappear?

Are you sure it is the reboot that causes the file to disappear? It could easily be that something you are doing removes your .bashrc file while you are actively running bash and you just won't notice that it is gone until the next time you reboot (or log out and log in again). Try running the command:
Code:
ls -l $HOME/.bashrc

just before you log out or reboot your system every time you log out or reboot your system.
# 3  
Old 07-10-2016
Hi Don Dragun,
Thank you for such a prompt reply

By predictably I'm saying that in all of the cases when it disappears it usually tends to be gone after some unknown crossed line of reboot counts (in the sense that you can bet it will happen sooner or later), never during login session, because I use commands from my .bashrc on a frequent basis and nothing signals about it not being there. But, as I said, after some reboots it will simply erase that file.

Quote:
Code:
ls -l $HOME/.bashrc

What this command lists?

Can I prevent the system from modifying it by setting up a "backstone" on its way?

Thanks
# 4  
Old 07-10-2016
So you say that .bashrc IS executed during login but then disappears during your interactive session?
The command that Don proposed should just make sure the file is still present at the moment when you log out or reboot. I'd propose to run it frequently to be able to tell about when it disappears.
# 5  
Old 07-10-2016
Quote:
Originally Posted by RudiC
So you say that .bashrc IS executed during login but then disappears during your interactive session?

Not quite. To represent the situation schematically the issue looks smth like this:

1.
Code:
.bashrc

normally is executed every time I open new Terminal window or start a new Terminal session (by typing the command
Code:
./.bashrc

in Terminal Preferences where you can customize what command for Terminal to execute on starting a session). I can't tell the exact moment it disappears but MOST of the time (except when it's being deleted) during my interactive session I'm able to use commands put in there successfully.

2. It also sits in its location immutably undergoing numerous shutdowns, reboots and so on.

3. At some point coinciding with some reboot (or with turning my Mac on) on Terminal trying to execute
Code:
./.bashrc

it fails because it tells
Code:
MacBook-Pro-ILJA:~ iljashebalin$ . ./.bashrc
-bash: ./.bashrc: No such file or directory

when I start Terminal session/open a new Terminal window. Executing the command
Code:
ls -lahG

reveals it's gone forever.

BTW, it was the second time I detected such misbehavior. The first time I had manually recreate the file together with all configurations I laboriously put into it.
# 6  
Old 07-10-2016
Quote:
Originally Posted by scrutinizerix
Not quite. To represent the situation schematically the issue looks smth like this:

1.
Code:
.bashrc

normally is executed every time I open new Terminal window or start a new Terminal session (by typing the command
Code:
./.bashrc

in Terminal Preferences where you can customize what command for Terminal to execute on starting a session). I can't tell the exact moment it disappears but MOST of the time (except when it's being deleted) during my interactive session I'm able to use commands put in there successfully.
We understand that. But, when you start a new terminal session, you don't need to type the command ./.bashrc if bash is the shell running in that terminal session. When bash is invoked as a login shell, it runs .bashrc in your home directory as part of its initialization steps.
Quote:
2. It also sits in its location immutably undergoing numerous shutdowns, reboots and so on.
We understand that.
Quote:
3. At some point coinciding with some reboot (or with turning my Mac on) on Terminal trying to execute
Code:
./.bashrc

it fails because it tells
Code:
MacBook-Pro-ILJA:~ iljashebalin$ . ./.bashrc
-bash: ./.bashrc: No such file or directory

You are assuming at least two things here, neither of which are backed up by what you have told us:
  1. The file $HOME/.bashrc is removed during a reboot. Nothing you have shown us tells us that $HOME/.bashrc was not removed 1 second after the last terminal session you started. It could have been removed any time after you started the last terminal session up until the next time you rebooted; not just as a side effect of rebooting.
  2. The files ./.bashrc and $HOME/.bashrc are the same file. If, at any point after you start a terminal session you issue a cd directory command, the command . ./bashrc would then be expected to fail in that terminal session unless you have issued another cd command that moves you back to your home directory.
Quote:
when I start Terminal session/open a new Terminal window. Executing the command
Code:
ls -lahG

reveals it's gone forever.

BTW, it was the second time I detected such misbehavior. The first time I had manually recreate the file together with all configurations I laboriously put into it.
OK. So, first you told us the file disappears predictability (sic) after an unknown number of reboots. I asked what happens that allows you to predict when it will disappear. You have not answered that question. And, now you tell us, that instead of the file disappearing predictably after some number of reboots, it has happened two times.

That file does not disappear as a side effect of rebooting unless you have modified a system or personal file that is executed when your system reboots that causes that file to be removed. It is MUCH MORE likely that you are doing something while you are logged in that is removing that file and you just don't notice it until you reboot after you have removed it. That is why it is important to know how you can predict when the file will disappear. If you can predict that the file won't be there the next time you reboot, it is probably because you have just done something that removed the file.

If you have issued a command to remove your own file, we can make it a little more likely that a warning will be printed before it is removed; but there is nothing we can do to keep you from removing your own file if you tell your shell to remove your file. You make it more difficult in some cases by making the file read-only after you recreate the file with the contents you want. The command:
Code:
chmod 400 $HOME/.bashrc

will do that. If you then try to remove the file using:
Code:
rm $HOME/.bashrc

it will ask for confirmation before removing your file. But, if you use the command:
Code:
rm -f $HOME/.bashrc

that command will happily remove your file exactly as you requested with no warning.

Of course, you would not have to actually type in one of the above commands literally to remove your file. It could also be done with an unlink command or library call, a rename command or library call, or a mv command (but, note that with rename or mv, the file's contents may still be present in a file with a different name instead of actually gone).

If you run the command:
Code:
ls -l $HOME/.bashrc

frequently, it will eventually report that the file is not found. And, if you can identify what you were doing before it disappeared, we'll have a better chance of tracking down what you are doing that is removing the file.
# 7  
Old 07-11-2016
OK, so to set it up I'd like to admit I'm neither computer not programming, let alone UNIX, geek. I'm a dummy, hence all this confusion with used terminology etc. It's possibly that I may've misled myself and others, participating in this discussion, due to this reason, not just because I intended to, bear that in mind, please.

You wrote too much. Let me clear out some points:
1. I don't know exactly why and when did .bashrc disappear. Considering "deletion-reboot" connection it's just my guess based on my subject observations. Maybe the connection is not the case, maybe it's really a coincidence that I misinterpreted as a cause.

Further on
2.
Quote:
But, when you start a new terminal session, you don't need to type the command ./.bashrc if bash is the shell running in that terminal session. When bash is invoked as a login shell, it runs .bashrc in your home directory as part of its initialization steps.
Really? Didn't have a clue of it. However I may misinterpret that statement once again but from "Learning UNIX for Mac OS X users" by Kevin Scoglund (by Lynda.com) I got impression that for commands from .bashrc to take effect you have to execute this file by running
Code:
source .bashrc

when in home directory (or
Code:
. ./.bashrc

- I think I foozled with the syntax in my last post considering this command, so stand corrected in this one). So, instead of running it multiple times when I launch Terminal or open its new window I just set it in Terminal Preferences to run it on bash shell's startup (see the screenshot - are we talking about the same thing?). It used to work - until it has gone.

3. I didn't execute in all my consciousness and right state of mind neither
Code:
rm -f

nor
Code:
rm

towards .bashrc file, that's for sure.

4. The main thing is that due to some unknown reasons the file got erased. I don't have a slightest explanation of this fact, I do however recall that some time ago I had a similar issue of unexpected deliberate erase (though I DON'T REMEMBER if it was the first occurrence of something deleting .bashrc or another file) because I copied and wrote down a Console's log referring to some pbs process.

The message was:

pbs[4781]: While watching paths {("/Users/iljashebalin/Library/")}, we got a change in path /Users/iljashebalin/Library/

Again, it's not my claim, rather my supposition that maybe something alike had hand in this case.
A system deletes my .bashrc file-shell-setuppng

Last edited by scrutinizerix; 07-11-2016 at 01:57 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Bashrc File - Conditional Command Execution?

Hello All, I was wondering if there is a way to execute a command in my ".bashrc" file based on how I logged into the PC? I was thinking maybe there is a way to check how the user (*myself) logged in, maybe somehow with the who command along with something else, but I'm not sure... I know I... (7 Replies)
Discussion started by: mrm5102
7 Replies

2. Solaris

rm -rf not able deletes file but not the directory

i am trying to remove a directory using rm -rf command but its not getting removed.. it doesnt throw any error also.. i am logging as the owner of the dir and removing it but still no luck.. i am able remove a file but not a directory. i am using solaris 10 (12 Replies)
Discussion started by: chidori
12 Replies

3. Slackware

Thunderbird 3.1.9 deletes from drafts

I am using Tbird as it came with Slackware 13.37 and everytime I send something I get a message 1 or 2 drafts deleted. Should it be doing that? If not has this been reported ? How can I find out if it was reported? I have no drafts to delete. (2 Replies)
Discussion started by: slak0
2 Replies

4. Shell Programming and Scripting

Why sed command deletes last line in a file if no carriage return?

Hi I am using sed command to make SCORE=somevalue to SCORE=blank in a file. Please see the attached lastline.txt file. After executing the below command on the file, it removes the last line. cat lastline.txt | sed 's/SCORE=.*$/SCORE=/g' > newfile.txt Why does sed command remove the... (3 Replies)
Discussion started by: ashok.k
3 Replies

5. Shell Programming and Scripting

A script that deletes files.

I want to write a script that deletes files inside the dir. However, the script should also allow the user to confirm by pressing (d) key before deleting files.. #!/bin/bash for file in $1/* do size='ls -l $file | cut -f 5 -d " "' name='ls -l $file | cut -f 9 -d " "' ... (1 Reply)
Discussion started by: herberwz
1 Replies

6. Shell Programming and Scripting

.bashrc file

Hi experts, I am using bash shell and I cant find any .bashrc file in my home dir. Can anybody please help me out here.... If .bashrc file is not there, from where my shell config operates? Also I want to set my prompt like... $ Please advice. (5 Replies)
Discussion started by: gentleDean
5 Replies

7. Shell Programming and Scripting

how do i look for my .bashrc file

hi i am using cygwin and would like to modify my .bashrc file. How can search to find where it is? I have looked at multiple bashrc file in /etc but none of them seemed to work..thanks (12 Replies)
Discussion started by: npatwardhan
12 Replies

8. Shell Programming and Scripting

Can I modify the .bashrc file instead of .profile file to customize my login?

Hello, I got this question which tells me to customize my login script. Some people in the forums suggested to modify the .profile file in my home directory. I did so, but none of my customizations show up when I open the terminal after. So, I tried to modify other files in my home directory,... (1 Reply)
Discussion started by: Hyunkel
1 Replies

9. UNIX for Dummies Questions & Answers

.bashrc file is an initialization file run by each interactive invocation

I search the web and found the following statements ..... The /etc/profile file is a system wide initialization script which is run at login time for each user, while .profile is the users own login initialization. The .bashrc file is an initialization file run by each interactive invocation... (1 Reply)
Discussion started by: cy163
1 Replies
Login or Register to Ask a Question